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

Ale*_*hak 11 storage android

我通过向服务器发出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();
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此方法,我可以为我的文件设置私有模式,以便其他应用程序无法访问它们.但后来我考虑将文件移动到缓存目录,我需要做类似的事情

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

也许有一种方法可以将缓存目录中的文件设为私有?或者将文件保存到哪里并不重要?

Mat*_*ark 16

无论是CacheDirFilesDir是应用特定的,并且不能由任何其他应用程序进行访问.

但是,如果用户已植根其设备,则可以访问这两者.

CacheDir用于临时文件,如果需要通过Android OS释放空间,则可以删除它们.除非应用程序,用户或卸载应用程序明确这样做,否则不会清除Files目录.

  • 谢谢马特,我想我会把它留在缓存中. (2认同)