getCacheDir() getFilesDir() 获取的目录在手机内存中:
getCacheDir()方法用于获取 /data/data/<application package>/cache目录
getFilesDir()方法用于获取 /data/data/<application package>/files目录
getDir() 这个方法获取的也是手机内存中的目录:
String dirName="xml"; //此处的名字即时内存中的文件夹的名字
File workDir=context.getDir(dirName,Context.MODE_PROVIVATE);
用户选择清除数据后,内存中的所有文件都会被清除掉包括以上的三个目录:
cache , files , xml 相应的数据库和sharepreference 都会被清除掉。
只选择清除缓存的话,只会清除掉cache目录下的数据。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
getExternalFilesDir() getExternalCacheDir() 获取的是sd卡的目录:
getExternalFilesDir() 用于获取SDCard/Android/data/你的应用的包名/files/ 目录
getExternalCacheDir() 用于获取SDCard/Android/data/你的应用包名/cache/目录
如果使用上面的两种方法创建文件夹,那么用户卸载应用时 SDCard/Android/data/
下的文件都会被删除掉而不会留下垃圾文件夹。
如果用户点击清除数据那这两个文件夹 files 和 cache 都会被清空。
如果用户只点击清除缓存。那么cache会被清空。files不会。
如果是视频或者音乐文件就不要这样保存,而是直接保存在sd卡目录下。
File file=new File(Environment.getExternalStorageDirectory() + "/file") ;
sd卡目录下 新建一个file文件夹,保存资源即可。即使用户卸载或者清除数据都不会
影响这个file文件夹的。
下面这个方法就是获取缓存的目录,如果有内存卡且挂载。那么新建一cache文件夹
在sd卡目录下。否则新建在手机内存的缓存目录下。
- public String getDiskCacheDir(Context context) {
- String cachePath = null;
- if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
- || !Environment.isExternalStorageRemovable()) {
- cachePath = context.getExternalCacheDir().getPath();
- } else {
- cachePath = context.getCacheDir().getPath();
- }
- return cachePath;
- }