2012-05-11 14 views
8

Sto cercando di leggere lo stesso file "Xmlfile.xml" dalle beni cartella e anche un'altra copia dalla scheda SD sdcard/download/.Leggi file xml dalla cartella Asset Android

posso leggere dalla scheda SD:

  • unfile ritorno Vero
  • Esite ritorno Vero

non posso non leggere dal cartella Assets:

  • unfile Restituire False
  • Esite ritorno Falso il

Questo codice non funziona

 File source = new File("file:///android_asset/xmlfile.xml"); 
     boolean unfile = source.isFile(); 
     boolean Esiste = source.exists(); 

     try 
     { 
      // todo 
     } catch (Exception e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

Questo il codice di lavoro

 File source = new File("/sdcard/" + "download" + "/" + "xmlfile.xml"); 
     boolean unfile = source.isFile(); 
     boolean Esiste = source.exists(); 

     try 
     { 
      // todo 
     } catch (Exception e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

qualcuno può spiegarmi come posso leggere il file dalla cartella Risorse.

grazie marco

+0

vedere da me indicato su http://stackoverflow.com/questions/1372470/parse-local-xml-file-in-android/8413361#8413361 – Khan

risposta

11

Per aprire una risorsa avresti bisogno il seguente pezzo di codice:

InputStream is = getAssets().open("xmlfile.xml") 
6

Usare questa funzione

// Converting given XML file name to String form 
String mOutputText = getxml("yourxml.xml"); 

/** 
* Function used to fetch an XML file from assets folder 
* @param fileName - XML file name to convert it to String 
* @return - return XML in String form 
*/ 
private String getXml(String fileName) { 
    String xmlString = null; 
    AssetManager am = context.getAssets(); 
    try { 
     InputStream is = am.open(fileName); 
     int length = is.available(); 
     byte[] data = new byte[length]; 
     is.read(data); 
     xmlString = new String(data); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 
    return xmlString; 
} 
+0

Per file intendevo la classe [collegamento] (http://developer.android.com/reference/java/io/File.html) – marcoqf73

+0

sostituisci InputStream is = am.open (percorso); con InputStream is = new FileInputStream (File) penso che possa essere d'aiuto – Mufazzal

0
try 
    { 
     AssetManager aManager = Class.getAssets(); 
     InputStream iStream = aManager.open("file.xml"); 
     int length = iStream.available(); 
     byte[] data = new byte[length]; 
     iStream.read(data); 
     assetString = new String(data).toString(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
0

Questo sarà sicuramente di aiuto . Per leggere una cartella delle risorse del modulo file è necessario un oggetto InputStream.

Sintassi:

InputStream yourobj=getApplicationContext().getAssets().open("Path to xml file"); 

Quindi il codice dal vivo può essere:

InputStream in_s = getApplicationContext().getAssets().open("www/application/app/client/controllers/data1.xml"); 

Qui data1.xml è il file all'interno del percorso.