我有一个应用程序让我通过文件资源管理器选择一个文件(文件存储在 sd 上),然后读取它。
我想修改它,所以它将文件直接放入应用程序并从“内部”读取文件。我必须将文件放入项目的哪里?我怎样才能访问它?
您可以使用以下代码在项目中保存文件:
File cDir = getApplication().getExternalFilesDir(null);
File saveFilePath = new File(cDir.getPath() + "/" + "yourfilename");
您可以在设备中的应用程序包名称的“文件”文件夹中看到保存的文件。
在您的设备中尝试以下路径:
File manager >> Android >> data >> "your package name" >> files >> new file.
是的,您可以将文件放入 /assets 文件夹,然后按如下方式检索:
AssetManager assetManager = getAssets();
InputStream instream = assetManager.open("file.txt");
或 res/raw 文件夹:
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)");