2011-03-03 14 views
10

Chicos tengo un problema que mi código da una excepción como permiso denegado cuando escribimos un xml en android. ¿Alguien puede decir cómo será eliminado?cómo crear un archivo xml en android

package com.ex.createXml; 

import android.app.Activity; 
import android.os.Bundle; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import org.xmlpull.v1.XmlSerializer; 
import android.os.Environment; 
import android.util.Log; 
import android.util.Xml; 
import android.widget.TextView; 


public class createXml extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     File newxmlfile = new File("/data/new.xml"); 
     try{ 
      newxmlfile.createNewFile(); 
     }catch(IOException e) 
     { 
      Log.e("IOException", "Exception in create new File("); 
     } 
     FileOutputStream fileos = null; 
     try{ 
      fileos = new FileOutputStream(newxmlfile); 

     }catch(FileNotFoundException e) 
     { 
      Log.e("FileNotFoundException",e.toString()); 
     } 
     XmlSerializer serializer = Xml.newSerializer(); 
     try{ 
     serializer.setOutput(fileos, "UTF-8"); 
     serializer.startDocument(null, Boolean.valueOf(true)); 
     serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); 
     serializer.startTag(null, "root"); 
     serializer.startTag(null, "Child1"); 
     serializer.endTag(null, "Child1"); 
     serializer.startTag(null, "Child2"); 
     serializer.attribute(null, "attribute", "value"); 
     serializer.endTag(null, "Child2"); 
     serializer.startTag(null, "Child3"); 
     serializer.text("Some text inside child 3"); 
     serializer.endTag(null,"Child3"); 
     serializer.endTag(null,"root"); 
     serializer.endDocument(); 
     serializer.flush(); 
     fileos.close(); 
     //TextView tv = (TextView)findViewById(R.); 

     }catch(Exception e) 
     { 
      Log.e("Exception","Exception occured in wroting"); 
     } 
    } 
} 
+5

Por favor, no haga la misma pregunta nuevamente. – Will

Respuesta

14

Pruebe esto para crear o leer un archivo en android. working with files

y crear/leer archivo XML tratar Working with XML

Si necesita cualquier proyecto de demostración relacionadas con XML de que me haga saber, voy a tratar de darle

+0

Cómo modificar un archivo XML que ya existe en Android? –

0

Parece que su tratando de crear un archivo en la ubicación de c:/que no es un identificador de ruta válida en un sistema androide. Android proviene de un entorno Linux.

http://developer.android.com/guide/topics/data/data-storage.html Siga este enlace para obtener más información sobre el almacenamiento de datos en android

Si desea crear un archivo en su PC local primero tiene que crear en su dispositivo Android y tire de ella desde el dispositivo (ya sea el emulador o su teléfono real)

5
File newxmlfile = new File("C:/new.xml"); 

Está intentando crear su archivo en la unidad C. Android es un sistema basado en Linux, por lo que no hay unidades allí. Los dispositivos de almacenamiento se pueden montar en la raíz ("/") o en cualquier otra carpeta.

Para su aplicación está disponible la carpeta /data/<pakcage-name>. Intenta escribir allí. También, se puede tratar de escribir en almacenamiento externo, pero su progrma se necesita un permiso para hacer eso:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

esto debería mencionarse dentro de su archivo de manifiesto.

Más información here.

+0

gracias Vladimir, y es cierto que otorga una excepción de permiso denegado. Entonces, ¿puedes decir cómo se puede eliminar? –

+0

ver la respuesta actualizada. –

0

No tiene permiso para escribir en esa ubicación.

File newxmlfile = new File("/data/new.xml"); 

Se podía guardarlo en la internal storage, or cache.

0

Debido al modelo de seguridad de Android no se puede escribir en /data/new.xml. Eso está intentando dirigirse al sistema de archivos raíz, que es el motivo por el que se le niega el permiso. Pruébalo sin la barra inicial.

FileOutputStream fos = openFileOutput("new.xml", MODE_PRIVATE); 
fos.write(...); 

Eso debería ponerlo en relación con su aplicación.

+0

Da un error ReadOnly File System –

+0

pero donde almacena el archivo? –

+0

@SanatPandey ¿Dónde guarda esto el archivo? encontraste la respuesta? No sé dónde se crea el archivo? – Atihska

0

Puede utilizar esta:

File xmlDir = new File(Environment.getExternalStorageDirectory().getPath() + "/data/new.xml"); 
Cuestiones relacionadas