我有一個應用程序讓我通過文件資源管理器(該文件存儲在sd中)選擇一個文件,然後讀取它。Android應用程序如何在應用程序內部存儲和獲取文件
我想修改它,所以它將文件直接放入應用程序並從「內部」讀取文件。我必須將文件放入項目中?我怎樣才能訪問它?
我有一個應用程序讓我通過文件資源管理器(該文件存儲在sd中)選擇一個文件,然後讀取它。Android應用程序如何在應用程序內部存儲和獲取文件
我想修改它,所以它將文件直接放入應用程序並從「內部」讀取文件。我必須將文件放入項目中?我怎樣才能訪問它?
是的,你可以把你的文件到/資產的文件夾,並檢索如下:
AssetManager assetManager = getAssets();
InputStream instream = assetManager.open("file.txt");
或RES /原始文件夾:
InputStream raw = getResources().openRawResource(R.raw.file);
如果你想修改它,你」只能將文件寫入外部存儲器(例如sdcard), 或內部存儲器(在您的應用程序文件夾data/data/package_name/
下)。 如果您將文件存儲到外部存儲中,它將一直存在,直到用戶手動或以編程方式刪除該文件。但是,如果您將此文件存儲到內部存儲中,則在用戶刪除應用程序或清除應用程序緩存時將刪除該文件。
我認爲從資產文件夾中可讀取的字節數是有限制的。 –
File myExternalFile;
if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) {
saveToExternalStorage.setEnabled(false);
} else {
myExternalFile = new File(getExternalFilesDir(filepath), filename);
}
保存外部存儲(FileOutputStream中)
try {
FileOutputStream fos = new FileOutputStream(myExternalFile);
fos.write(myInputText.getText().toString().getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
myInputText.setText("");
responseText.setText("Saved to External Storage.(StorageFile.txt)");
獲取外部存儲(的FileInputStream)
try {
FileInputStream fis = new FileInputStream(myExternalFile);
BufferedReader br = new BufferedReader(
new InputStreamReader(fis));
String strLine;
while ((strLine = br.readLine()) != null) {
myData = myData + strLine;
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
myInputText.setText(myData);
responseText
.setText("Data retrieved from Internal Storage.(StorageFile.txt)");
請不要使用DataInputStream來讀取文本文件。你不需要它,所以請刪除它,因爲人們可能會複製此代碼。 –
@PeterLawrey:那麼哪個類應該使用? –
使用您已有的其他課程。 DataInputStream是多餘的,這個壞例子在堆棧溢出時每個月大約被複制30次。 –
您可以通過使用保存文件的項目中的以下代碼:
File cDir = getApplication().getExternalFilesDir(null);
File saveFilePath = new File(cDir.getPath() + "/" + "yourfilename");
您可以在設備中的應用程序包名稱的「文件」文件夾內看到保存的文件。
嘗試以下路徑在您的設備:
File manager >> Android >> data >> "your package name" >> files >> new file.
您可以在構建應用程序時添加文件到資產的文件夾..但我不能建立後應用到資產的文件夾中寫以後...您可以在SD卡上寫字的方式 – DeltaCap