caching与数据存储下载的内容

我正在通过向服务器发出HTTP GET请求来下载一些文本数据。 如果已经下载,我想保存下载的文本文件以便在请求时重新使用它。 但是我想保持我的数据私密,以便其他应用程序不能访问它。 另一方面,如果Android在没有足够的磁盘空间的情况下删除了这些文件,那也可以。

所以,我的问题是 – 我应该将下载的内容存储在App Data文件夹或caching文件夹中? 两者有什么区别?

首先,我使用类似的方法将文件保存在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(); } } 

使用这种方法,我可以为我的文件设置私人模式,以便其他应用程序不能访问它们。 但后来我想把文件移动到caching目录,我需要做类似的事情

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

我无法将私有属性设置为我的文件,所以,据我所知,任何应用程序将能够访问我的数据。 我对吗?

也许有办法使caching目录中的文件私人? 或者,将文件保存到哪里并不重要?

Solutions Collecting From Web of "caching与数据存储下载的内容"

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

但是,如果用户已经对其设备进行了root化,则可以访问这两者。

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

这在文档中有所涉及:

http://developer.android.com/guide/topics/data/data-storage.html

保存caching文件

如果你想caching一些数据,而不是永久存储,你应该使用getCacheDir()来打开一个文件,该文件表示应用程序应该保存临时caching文件的内部目录。

当设备内部存储空间不足时,Android可能会删除这些caching文件以恢复空间。 但是,您不应该依赖系统为您清理这些文件。 您应该始终自行维护caching文件,并保持在合理的占用空间(如1MB)范围内。 当用户卸载您的应用程序时,这些文件被删除。

caching中的数据只能访问您的应用程序(如果它没有根,但是用户select最小化安全性)