1

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

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

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

谢谢。

4

4 回答 4

1

如果您将文件添加到 Eclipse 中的 Assets 文件夹中,它们将与您的应用程序一起加载,您可以在运行时使用

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

然后你就可以像往常一样使用 InputStream 了。您可以使用 Activity 获取上下文getApplicationContext()

如果要写入文件:

FileOutputStream fOut = context.openFileOutput(fileName, Context.MODE_PRIVATE);
于 2012-10-06T13:44:47.867 回答
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;
}

如图所示数据存储 如果可能的话,您可以简单地在外部目录上写入,否则回退到内部缓存。

您也可以在文件系统上的任何位置写入,但将文件设为您的应用程序私有

FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
于 2012-10-06T13:56:05.983 回答
0

您可以将文件保存在外部存储中:

Environment.getExternalStorageDirectory()

于 2012-10-06T13:44:33.080 回答
0

如您所述,您应该将这些文件复制到内部存储中。如果文件是应用程序私有的,则无需使用外部存储。当您说在 Eclipse 中将文件存储在文件夹中时,我认为您实际上是在谈论创建一个将随 APK 一起提供的文件夹。这样的文件将不可写。

于 2012-10-06T14:02:42.437 回答