android - 下载内容的缓存与数据存储

标签 android storage

我正在通过向服务器发出 HTTP GET 请求来下载一些文本数据。如果已经下载,我想保存下载的文本文件以根据要求重新使用它。但我想将我的数据保密,这样其他应用程序就无法访问它。另一方面,如果没有足够的磁盘空间,Android 可以删除这些文件。

所以,我的问题是 - 我应该将下载的内容存储在 App Data 文件夹中还是缓存文件夹中?两者之间有什么区别吗?

首先,我曾经使用像这样的方法将文件保存在App Data文件夹中

public void save(String fileName, String data) {
    FileOutputStream fos;
    try {
        fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE);
        fos.write(data.getBytes());
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

使用这种方法,我可以为我的文件设置私有(private)模式,这样其他应用程序就无法访问它们。但后来我想到将文件移动到缓存目录,我需要做一些类似的事情

private void save(String filename, String data) {
    File cacheDir = new File(mContext.getCacheDir(), "app_directory");
    cacheDir.mkdir();
    try {
        FileOutputStream fos = new FileOutputStream(new File(cacheDir, filename));
        fos.write(data.getBytes());
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我不能再为我的文件设置 Private 属性,因此,据我所知,任何应用程序都可以访问我的数据。我说得对吗?

也许有办法将缓存目录中的文件设为私有(private)?或者将文件保存到哪里并不重要?

最佳答案

CacheDirFilesDir 都是特定于应用程序的,不能被任何其他应用程序访问。

但是,如果用户已对他们的设备进行 root,则可以访问这两者。

CacheDir 用于临时文件,如果 Android 操作系统需要释放空间,可以将其删除。文件目录不会被清除,除非应用程序、用户明确清除,或者应用程序被卸载。

关于android - 下载内容的缓存与数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778810/

相关文章:

java - 在 Android 上围绕现有的 PHP 系统实现 AES 加密/解密

Android 相对布局以编程方式更改 TextView

php - SQL 数据库或文件系统中的照片 (2012)

django - 当我从数据库/模型中删除对象时,如何让 Django Admin 删除文件?

java - 在 jni 中运行的 native C 代码与在 Android 中的 shell 中运行的区别

android - new OnClickListener(){} 类型的 onClick(View) 方法必须覆盖或实现父类(super class)型方法

android - EditText 上的 ImageSpan(笑脸)。使用 SwiftKey 键盘不起作用

linux - 重启所有服务器时的 Ceph 删除编码不完整的 pgs

android - 不同设备类型上的应用安装大小相同

Android – 在哪里存储下载的内容,内部存储还是外部存储?