Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在哪里存储可编辑文件_Android - Fatal编程技术网

Android在哪里存储可编辑文件

Android在哪里存储可编辑文件,android,Android,我的应用程序读取一堆文本文件。目前,我已将它们全部保存在assets文件夹中,但我希望在运行时编辑这些文件 应该在第一次运行时将所有这些文件复制到内部存储中,或者我可以在eclipse中创建一个文件夹并保存这些文件 如果是,那么读取它们的文件路径是什么 谢谢。您可以将文件保存在外部存储器中: 如果您在Eclipse中将文件添加到资产文件夹中,这些文件将随应用程序一起加载,您可以在运行时使用 InputStream in = context.getAssets().open(filename);

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

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

如果是,那么读取它们的文件路径是什么


谢谢。

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


如果您在Eclipse中将文件添加到资产文件夹中,这些文件将随应用程序一起加载,您可以在运行时使用

InputStream in = context.getAssets().open(filename);
然后您可以像往常一样使用InputStream。您可以使用
getApplicationContext()
获取活动中的上下文

如果要写入文件,请执行以下操作:

FileOutputStream fOut = context.openFileOutput(fileName, Context.MODE_PRIVATE);

Android为您提供所需的一切: 如果您想节省外部存储,只需执行以下操作即可

Environment.getExternalStorageDirectory().getPath()
我建议将其保存在cache dir中,并在需要时对其进行编辑,因为它似乎最适合您的需要

getCacheDir().getPath()
但请注意:

注意:您不应依赖系统为您删除这些文件;对于缓存文件所消耗的空间量,您应该始终有一个合理的最大值,例如1MB,并在超过该空间时修剪这些文件

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);

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

谢谢,我想我会这样做的。首先,我会将文件复制到另一个文件夹,然后对其进行编辑。完成后,我将立即尝试。感谢您的详细回复。我将坚持使用内部存储,因为数据没有那么大。