zoukankan      html  css  js  c++  java
  • getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()

    一.getCacheDir、getCacheDir

    getCacheDir()方法用于获取/data/data//cache目录 
    getFilesDir()方法用于获取/data/data//files目录

    二.getExternalFilesDir、getExternalCacheDir

      应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?

      通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据 
    通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据.如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。

      而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项 
    如果要保存下载的内容,就不要放在以上目录下

      较优秀的程序都会专门写一个方法来获取缓存地址,如下所示:

    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卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data//cache 这个路径,而后者获取到的是 /data/data//cache 这个路径。 
      注意:这两种方式的缓存都会在卸载app的时候被系统清理到,而开发者自己在sd卡上建立的缓存文件夹,是不会跟随着app的卸载而被清除掉的。

    三.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

    转载于:http://blog.csdn.net/a910626/article/details/51470866

  • 相关阅读:
    ACM的算法分类 2015-04-16 14:25 22人阅读 评论(0) 收藏
    初学Larevel 2014-08-21 11:24 90人阅读 评论(0) 收藏
    初学PHP&MySQL 2014-05-31 12:40 92人阅读 评论(0) 收藏
    codeforces 570 E. Pig and Palindromes (dp)
    codeforces 570 D. Tree Requests (dfs序)
    poj 2157 Maze (bfs)
    cf 570 C. Replacement (暴力)
    cf 570B B. Simple Game(构造)
    cf 570 A. Elections
    hdu 1429胜利大逃亡(续) (bfs+状态压缩)
  • 原文地址:https://www.cnblogs.com/tangZH/p/6533677.html
Copyright © 2011-2022 走看看