2011-07-27 104 views
0

我很難搞清楚如何在Android設備上寫入和讀取文件。該文件將被格式化爲XML,並且我已經構建了可以將XML格式化爲對象和對象爲XML的解析器和數據結構,但最後一個障礙是從非資源文件中讀取XML(我知道數據結構的工作原因我從資源文件讀取時工作),並寫入非資源文件。我使用工具進行調試非常糟糕(不知道如何打印堆棧跟蹤),但我知道一個問題是我無法讀取或寫入這些文件。我沒有經驗寫入Java文件,這可能是爲什麼我有這個艱難的時間。在Android中的文件中寫入和讀取文件

編寫代碼:

File scoresFile = new File(getExternalFilesDir(null), "scores.xml"); 

    if (!scoresFile.exists()) 
    { 
     scoresFile.createNewFile(); 
    } 

    OutputStream os = new FileOutputStream(scoresFile); 

    os.write(writer.toString().getBytes()); 
    os.flush(); 
    os.close(); 

讀代碼:

XmlPullParserFactory xmlFac = XmlPullParserFactory.newInstance(); 
    XmlPullParser qXML = xmlFac.newPullParser(); 
    InputStream is = null; 
    File scoresFile = new File(c.getExternalFilesDir(null), "scores.xml"); 

    if (!scoresFile.exists()) 
    { 
     try { 
      scoresFile.createNewFile(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    try { 
     is = new FileInputStream(scoresFile); 
    } catch (FileNotFoundException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    if (is != null) 
     qXML.setInput(is,null); 
    else 
     qXML = c.getResources().getXml(R.xml.scores); 

UPDATE:最後,如果在讀部分條款總是計算爲false。所以,InputStream是空的......這似乎是我的問題的根源。

+1

究竟是什麼問題或問題? – rds

+0

這個scores.xml文件或者是a)沒有被創建,或者b)我找不到它並且得到它的句柄。 – jcampos8782

回答

2

我想看看這兩個環節:Using Internal StorageUsing External Storage

兩個鏈接到同一個頁面,只是不同的部分。真的,這取決於您是否要將此文件保存到設備內存或外部介質(如SD卡)。

  1. 內部 - 沙盒,以便只有您的應用程序可以訪問它。
  2. 外部 - 任何人都可以訪問它。
+0

好吧...有人給我的最後一個鏈接是不同的,是可怕的。讀這個解決了我的問題。感謝您指點我正確的方向。 – jcampos8782