Android 获取缓存文件的目录,文件的目录,外部存储的目录
发布时间
阅读量:
阅读量
详细说明这些函数各自承担了什么功能?
一.getCacheDir、getCacheDir
getCacheDir() 方法旨在负责获取 /data/data//cache 目录
getFilesDir() 方法旨在负责获取 /data.data//files 目录
二.getExternalFilesDir、getExternalCacheDir
应用程序在运行过程中如果需要向手机上保存数据,则通常会将这些数据存储在SDcard中。大多数应用都是直接在SDCard根目录下创建一个文件夹,并将所有相关数据存放在该文件夹内。这样做的好处是可以保证即使应用程序被卸载也不再SDCard上留下任何残留数据(即所谓的垃圾文件)。如果你希望当应用卸载时能够清除与之相关的所有数据该怎么办呢?
通过调用Context.getExternalFilesDir()方法能够访问到 $SDCard Android data [your app package name] files 目录,并通常用于存储长时间保存的数据
这两个目录分别相当于设置→应用→应用详情中的‘清除数据’和‘清除缓存’选项。如果需要下载内容,则应当避免将它们放置在上述目录中。
较优秀的程序都会专门写一个方法来获取缓存地址,如下所示:
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;
}
代码解释
如上所示,在SD卡存在或无法从其移除的情况下,则会调用getExternalCacheDir()方法以获取缓存路径位置;而如果SD卡不存在或者能够被移除,则会调用getCacheDir()方法以确定缓存存储位置。前者所得到的正是/sdcard/Android/data//cache这个路径;而后者则会得到的数据存储路径是/disk/data/data//cache这个位置。需要注意的是,在卸载应用时系统会清除这两种缓存机制所关联的数据。
三.Android开发:filePath放在哪个文件夹
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/com.my.app-1.apk
getPackageResourcePath() = /data/app/com.my.app-1.apk
getCacheDir() = /data/data/com.my.app/cache
getDatabasePath(“test”) = /data/data/com.my.app/databases/test
getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.my.app/app_test
getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache
getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.my.app/files/test
getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files
getFilesDir() = /data/data/com.my.app/files
代码解释
全部评论 (0)
还没有任何评论哟~
