【问题标题】:Storing data in FLASH in android在android中将数据存储在FLASH中
【发布时间】:2014-12-14 13:42:58
【问题描述】:

文件可以作为缓存或文件存储在内存或 SD 卡中

  1. 如果数据存储为文件,则该文件将一直存在,直到 被用户明确删除
  2. 如果数据存储为缓存,如果android觉得有 手机中没有内存作为家务操作它会清除 自动缓存内存

我的问题:

假设我的应用程序已将文件作为文件写入 SD-CARD 或内部存储器,现在我卸载我的应用程序。该文件是否也会被删除,或者即使在应用程序被删除后它仍会保留在那里

{编辑}

其他问题: 当我进入设置屏幕并清除缓存时...。所有文件和缓存都会自动删除由该应用程序的用户创建的 w.r.t getExternalFilesDir()getExternalCacheDir()Environment.getExternalStoragePublicDirectory() /

【问题讨论】:

    标签: android


    【解决方案1】:

    文件可以作为缓存或文件存储在内存或 SD 卡中

    Internal storageexternal storage 具有缓存目录选项。 Removable storage,在可以通过 Android SDK 访问的范围内,没有。

    假设我的应用程序已将文件作为文件写入 SD-CARD 或内部存储器,现在我卸载我的应用程序。该文件是否也会被删除,或者即使在应用程序被删除后它仍会保留在那里

    • 内部存储:您的文件已删除

    • 外部存储:如果您将文件写入以getExternalFilesDir()getExternalCacheDir() 为根的位置,则您的文件将被删除。如果您将文件写入其他地方(例如,Environment.getExternalStoragePublicDirectory()),您的文件不会被删除

    • 可移动存储,在 Android 4.4 之前:无法正式访问可移动存储;如果您的文件在那里结束,则不应在卸载您的应用时将其删除

    • 可移动存储,Android 4.4+:AFAIK,如果您写入支持的位置(getExternalFilesDirs()getExternalCacheDirs()),如果该特定的可移动存储位当时在设备中,您的文件将被删除卸载

    【讨论】:

    • 感谢您提供宝贵的信息...如果我很清楚,如果我在任何prior android-4.4 中添加fileremovable storage,它将不会被删除。即使我使用getExternalFilesDir() 或 'getExternalCacheDir()',此语句也有效?
    • @Devrath: getExternalFilesDir()getExternalCacheDir() 用于外部存储,而不是可移动存储。关于“清除数据”按钮,效果就像用户卸载并重新安装了您的应用程序。当用户点击“清除数据”时,卸载应用程序时会删除的所有内容都会被删除。
    • 现在我明白了,外部存储是android提供的内部存储(不是RAM)......可移动存储是SD卡......所以@987654336上的数据当我在Settings 上使用clear data 时,@ 也会被删除? ...我正在阅读另一篇 SO-Post - 不知道它的引用是否正确或误导(stackoverflow.com/a/24927591/1083093)。看看吧!
    • @Devrath:“所以当我在设置中使用清除数据时,SD-CARD 上的数据也会被删除?” ——请看我回答中的第三和第四个项目符号。当用户点击“清除数据”时,卸载应用程序时会删除的所有内容都会被删除。
    【解决方案2】:

    我使用Environment.getExternalStorageDirectory().getAbsolutePath() 查找用户的外部 SD 并将数据文件写入为我的应用创建的目录。该目录及其内容通过我的应用程序的多次测试重新安装而持续存在,所以我会说以这种方式创建的文件是持久的。

    根据the Android docs here,这样访问内部存储的情况并非如此:

    String FILENAME = "hello_file";
    String string = "hello world!";
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    fos.write(string.getBytes());
    fos.close();
    

    这些文件不会通过重新安装保留。

    【讨论】:

    • 没有getExternalStorage()方法,在绝大多数Android设备上并不指向“用户的SD”。
    • 对不起,错字。查看我的代码后编辑命令。我假设将文件放在外部 SD 上,但我会遵从 CommonsWare 的意见。
    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2017-11-19
    • 2015-02-26
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多