我的应用程序读取了一堆文本文件。目前我已将它们全部保存在assets文件夹中,但我想在运行时编辑这些文件。
应该在第一次运行时将所有这些文件复制到内部存储中,或者我可以在eclipse中创建一个文件夹并保存文件。
如果是这样,文件路径是什么来阅读它们?
感谢。
答案 0 :(得分:1)
如果您将文件添加到Eclipse中的Assets文件夹,它们将加载您的应用程序,您可以在运行时使用
访问它们InputStream in = context.getAssets().open(filename);
然后你可以像往常一样使用InputStream。您可以使用getApplicationContext()
如果你想写文件:
FileOutputStream fOut = context.openFileOutput(fileName, Context.MODE_PRIVATE);
答案 1 :(得分:1)
Android为您提供所需的一切: 如果你想节省外部存储,你可以简单地做
Environment.getExternalStorageDirectory().getPath()
我建议将其保存在缓存目录中并在需要时进行编辑,因为它似乎最符合您的需求。
getCacheDir().getPath()
但请注意:
注意:您不应该依赖系统删除这些文件;对于缓存文件占用的空间量,您应始终具有合理的最大值(例如1 MB),并在超过该空间时修剪这些文件。
PS:您可以检查是否可以这样写在外部目录上:
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;
}
如图所示data storage 如果可能的话,您可以在外部目录上执行此操作,否则将回退到内部缓存。
此外,您可以在文件系统的任何位置书写,但将文件设为您的应用程序的私有
FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
答案 2 :(得分:0)
您可以将文件保存在外部存储中:
Environment.getExternalStorageDirectory()
答案 3 :(得分:0)
您应该如上所述将这些文件复制到内部存储。如果文件是应用程序的私有文件,则无需使用外部存储。当你说在Eclipse中的文件夹中存储文件时,我认为你真的在谈论创建一个随APK一起提供的文件夹。这样的文件不可写。