【问题标题】:Android where to store editable filesAndroid在哪里存储可编辑文件
【发布时间】:2012-10-06 13:41:13
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

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

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

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

    如果你想写文件:

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

    【讨论】:

    • 谢谢,我想我会这样做。首先我将文件复制到另一个文件夹,然后编辑它们。
    • 完成了,我现在要试试。
    【解决方案2】:

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

    【讨论】:

    • 感谢您的详细回复。我只是坚持使用内部存储,因为数据不是那么大。
    【解决方案3】:

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

    Environment.getExternalStorageDirectory()

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 2014-11-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多