Android在哪里存储可编辑文件

时间:2012-10-06 13:41:14

标签: android

我的应用程序读取了一堆文本文件。目前我已将它们全部保存在assets文件夹中,但我想在运行时编辑这些文件。

应该在第一次运行时将所有这些文件复制到内部存储中,或者我可以在eclipse中创建一个文件夹并保存文件。

如果是这样,文件路径是什么来阅读它们?

感谢。

4 个答案:

答案 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一起提供的文件夹。这样的文件不可写。