2012-10-06 23 views
1

我的應用程序讀取一堆文本文件。目前我已將它們全部保存在資產文件夾中,但我想在運行時編輯這些文件。Android在哪裏存儲可編輯文件

應該在第一次運行時將所有這些文件複製到內部存儲器中,或者我可以在eclipse中創建一個文件夾並保存文件。

如果是這樣的話,將會有什麼文件路徑來讀取它們?

謝謝。

回答

1

如果您在Eclipse中添加文件到您的資產文件夾,它們將被裝入您的應用程序,你可以訪問他們在運行時與

InputStream in = context.getAssets().open(filename); 

然後你可以像往常一樣使用InputStream。您可以通過getApplicationContext()獲取活動中的上下文。

如果你想寫入文件:如果你想在外部存儲保存你可以簡單地做

Environment.getExternalStorageDirectory().getPath() 

什麼,我會建議是 :

FileOutputStream fOut = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
+0

謝謝,我想我會這樣做。首先我會將文件複製到另一個文件夾,然後編輯它們。 – user557240

+0

好吧,也許你可以接受答案,如果它的工作:) – Puckl

+0

完成,我要去嘗試它。 – user557240

0

您可以將文件保存在外部存儲:

Environment.getExternalStorageDirectory()

1

Android爲您提供您所需要的一切將其保存在緩存目錄中並在需要時進行編輯,因爲它似乎最適合您的需求。

getCacheDir().getPath() 

但確實指出:

注意:你不應該依賴系統中刪除這些文件,你的;對於緩存文件佔用的空間量,您應始終擁有合理的最大值(例如1 MB),並在超過該空間時修剪這些文件。

PS:你可以檢查,如果你能在外部目錄寫這種方式:如圖所示data storage

boolean mExternalStorageAvailable = false; 
boolean mExternalStorageWriteable = false; 
String state = Environment.getExternalStorageState(); 

if (Environment.MEDIA_MOUNTED.equals(state)) { 
// We can read and write the media 
mExternalStorageAvailable = mExternalStorageWriteable = true; 
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
// We can only read the media 
mExternalStorageAvailable = true; 
mExternalStorageWriteable = false; 
} else { 
// Something else is wrong. It may be one of many other states, but all we need 
// to know is we can neither read nor write 
mExternalStorageAvailable = mExternalStorageWriteable = false; 
} 

而且你可以簡單地做,如果外部目錄可以寫,否則退回到內部緩存。

您也可以在文件系統中的任何地方寫字,但使文件僅對您的應用程序

FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE); 
+0

感謝您的詳細回覆。由於數據不是那麼大,我只是堅持使用內部存儲。 – user557240

0

你應該爲你所提到的這些文件複製到內部存儲器。如果文件對應用程序是私有的,則不需要使用外部存儲。當你說在Eclipse中將文件存儲在一個文件夾中時,我認爲你確實在討論如何創建將隨APK一起提供的文件夾。這樣的文件不會被寫入。