2016-06-29 10 views
0

Ich benutze 2 Schaltfläche, 1. Schaltfläche zum Erstellen von XML-Datei in SD-Karte
und 2. Schaltfläche, um diese XML zu lesen.
dies ist mein Code:android erstellen und lesen xml von sdcard

String xml_root; 
ListView lv_emp; 
static final String KEY_NAME = "name"; 
static final String KEY_AGE = "age"; 
List<HashMap<String, String>> empHashmap; 
List<ClassEmp> empList = null; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_empacc); 

    xml_root = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "\n" + 
      "<employees>" + "\n" + 
      "\t" + "<emp>" + "\n" + 
      "\t" + "\t" + "<name>" + "jame" + "</name>" + "\n" + 
      "\t" + "\t" + "<age>" + "17" + "</age>" + "\n" + 
      "\t" + "</emp>" + "\n" + 
      "\t" + "<emp>" + "\n" + 
      "\t" + "\t" + "<name>" + "natalie" + "</name>" + "\n" + 
      "\t" + "\t" + "<age>" + "20" + "</age>" + "\n" + 
      "\t" + "</emp>" + "\n" + 
      "</employees>"; 

    Button bt_create2 = (Button)findViewById(R.id.bt_createfileT2); 
    bt_create2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       File newFolder = new File(Environment.getExternalStorageDirectory(), "TestFolder"); 
       if (!newFolder.exists()) { 
        newFolder.mkdir(); 
       } 

       File file = new File(newFolder, "Test" + ".xml"); 
       if (!file.exists()) { 
        file.createNewFile(); 
        FileOutputStream fOut = new FileOutputStream(file); 
        OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut); 
        myOutWriter.append(xml_root); 
        myOutWriter.close(); 
        fOut.close(); 
       } 
      } catch (Exception e) { 
       System.out.println("e: " + e); 
      } 
     } 
    }); 

    Button bt_read2 = (Button)findViewById(R.id.bt_readfileT2); 
    bt_read2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       lv_emp = (ListView)findViewById(R.id.lv_Emp); 
       File file = new File(Environment.getExternalStorageDirectory() + "TestFolder/Test.xml"); 
       InputStream is = new FileInputStream(file.getPath()); 
       XmlPullParserEmp parser_Emp = new XmlPullParserEmp(); 
       empList = parser_Emp.parse(is); 
       BinderDataEmp bd_Emp = new BinderDataEmp(Empacc.this, empHashmap); 
       lv_emp.setAdapter(bd_Emp); 
      } 
      catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

mit diesem Code, war es Test.xml in Testfolder auf SD-Karte erstellen.
aber ich kann es nicht lesen.
wie es zu beheben?

+0

bitte den Fehler teilen, die Sie bekommen, während die Datei zu lesen. –

+0

Ich sehe java.io.FileNotFoundException: /mnt/sdcardTestFolder/Test.xml: Öffnen fehlgeschlagen: ENOENT (Keine solche Datei oder Verzeichnis), bei libcore.io.IoBridge.open (IoBridge.java: 416), bei java.io .FileInputStream. abcd1234

+0

können Sie deutlich in dem Fehler sehen, dass Sie kein '/' zwischen SD-Karte und TestFolder haben. –

Antwort

0

Sie sind höchstwahrscheinlich fehlen/(Schrägstrich) während der Datei zu lesen

verwenden und versuchen Sie es erneut:

File file = new File(Environment.getExternalStorageDirectory() + "/TestFolder/Test.xml"); 
+0

funktioniert nicht. – abcd1234

+0

Ich sehe Fehler org.xmlpull.v1.XmlPullParserException: Kommentare dürfen nicht enthalten - (Position: COMMENT, @ 3: 13 in [email protected]), bei org.kxml2.io.KXmlParser.readComment (KXmlParser. Java: 564) – abcd1234

+0

Gleiche Codezeile, die in meinem android Studio läuft. Überprüfen Sie die Berechtigung oder Ihr XmlPullParserEmp parser_Emp = new XmlPullParserEmp(); Klasse könnte ein Problem haben. –