我正在通过向服务器发出 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)?或者将文件保存到哪里并不重要?
最佳答案
CacheDir
和 FilesDir
都是特定于应用程序的,不能被任何其他应用程序访问。
但是,如果用户已对他们的设备进行 root,则可以访问这两者。
CacheDir 用于临时文件,如果 Android 操作系统需要释放空间,可以将其删除。文件目录不会被清除,除非应用程序、用户明确清除,或者应用程序被卸载。
关于android - 下载内容的缓存与数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778810/