2012-07-04 23 views
-1

我想我有點困惑如何將文件存儲在實際的機器上(甚至是仿真器)。在打包的android應用程序中存儲xml更新的位置?

編程時,我可以手動將資源文件夾中的xml文件保存到文件夾中,但是如何編寫將不得不連接到網絡並下載文件的應用程序,將其保存在某處然後進行操作?它將在哪裏存儲所述文件?

我想創建一個新文件,但我在另一篇文章上看到,資產文件夾本身一旦打包就不可用;那麼他們在哪裏創建和存儲?他們如何轉移。它只是,我是這個平臺的新手,文件系統有點混亂。

回答

0

如果您想使用更新的XML,您應該考慮將文件從資產複製到設備存儲。你可以看看How to copy files from 'assets' folder to sdcard?以瞭解如何做到這一點。

另一種替代方法是使用數據庫,您可以在其中存儲來自XML的已分析數據。這樣,無論何時需要訪問內容,都無需分析文件。

0

您有兩種選擇:從您的活動中調用getFilesDir()以獲取只能從您的應用讀取/寫入的內部數據文件夾的路徑。

或者,您可以將您的xml文件寫入/讀取到外部存儲(SD卡)。使用Environment.getExternalStorageDirectory()方法獲取外部存儲的根路徑,然後根據需要創建自己的文件夾。

請注意,如果您寫入外部存儲器,手機中的每個應用程序都可以訪問它。

0

即使我面臨這個問題。現在我有一個具有應用程序屬性的xml文件。它打包在資產文件夾中。一旦打包,我們就無法編輯資產文件夾中的文件。 現在在用戶加載應用我只是將此文件複製到路徑由

context.getFilesDir().getAbsolutePath(); 

返回,並從同一個地方的應用進行編輯。您可以看到文件是否在FileExplorer面板DDMS視圖中被修改。該文件存儲在與您的應用程序包名稱相同的文件夾中,例如:com.abhi.maps

或者,您也可以將其複製到SD卡中。但它有風險,因爲sd卡可能全部可用時間。

您可以使用下面的代碼從資源文件夾中複製文件:

private static void copyFile(String filename, Context context) { 
    AssetManager assetManager = context.getAssets(); 

    InputStream in = null; 
    OutputStream out = null; 
    try { 
     in = assetManager.open(filename); 
     String newFileName = context.getFilesDir() + "/" + filename; 
     out = new FileOutputStream(newFileName); 

     byte[] buffer = new byte[1024]; 
     int read; 
     while ((read = in.read(buffer)) != -1) { 
      out.write(buffer, 0, read); 
     } 
     in.close(); 
     in = null; 
     out.flush(); 
     out.close(); 
     out = null; 
    } catch (Exception e) { 
     Log.e("tag", e.getMessage()); 
    } 

} 

希望它能幫助! :)

相關問題