2016-06-29 78 views
0

我使用2按鈕,第一個按鈕在SD卡中創建xml文件
和第二個按鈕來讀取此xml。
這是我的代碼:android創建並從SD卡讀取xml

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(); 
      } 
     } 
    }); 
} 

與此代碼,它是在SD卡中TestFolder創建的test.xml。
但我看不懂。
如何解決它?

+0

請分享讀取文件時,你得到的錯誤。 –

+0

我看到java.io.FileNotFoundException:/mnt/sdcardTestFolder/Test.xml:打開失敗:ENOENT(沒有這樣的文件或目錄),位於libcore.io.IoBridge.open(IoBridge.java:416),位於java.io .FileInputStream。 abcd1234

+0

你可以在錯誤中清楚地看到sdcard和TestFolder之間沒有'/'。 –

回答

0

您正在閱讀的文件

使用此重試過程中最有可能丟失/(斜槓):

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

它無法正常工作。 – abcd1234

+0

我看到錯誤org.xmlpull.v1.XmlPullParserException:註釋可能不包含 - (位置:COMMENT,@ 3:13在[email protected]),位於org.kxml2.io.KXmlParser.readComment(KXmlParser。 java:564) – abcd1234

+0

在我的android studio中運行的同一行代碼。檢查權限 或者您的XmlPullParserEmp parser_Emp = new XmlPullParserEmp();班級可能有問題。 –