Advertisement

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)

还没有任何评论哟~