getCacheDir()方法用于获取/data/data/<application package>/cache目录

getFilesDir()方法用于获取/data/data/<application package>/files目录

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据

如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。

而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项

如果要保存下载的内容,就不要放在以上目录下

-----------------------------------------------------------------------------------------------------------------------------------------------------

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

[java] view plaincopy
  1. public String getDiskCacheDir(Context context) {
  2. String cachePath = null;
  3. if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
  4. || !Environment.isExternalStorageRemovable()) {
  5. cachePath = context.getExternalCacheDir().getPath();
  6. } else {
  7. cachePath = context.getCacheDir().getPath();
  8. }
  9. return cachePath;
  10. }

可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data/<application package>/cache 这个路径,而后者获取到的是 /data/data/<application package>/cache 这个路径。

数据存储:
1.内存
2.内存设备--->应用名--->(cache/files/其他名字):用的少
3.内存设备--->Android--->data--->应用名--->(cache/files/其他名字):用的多
4.sd卡--->应用名--->(files/cache/其他名字):用得少
5.sd卡--->Android--->data--->应用名--->(cache/files/其他名字):用的多

参考:http://blog.csdn.NET/beihai1212/article/details/7055899

http://blog.csdn.Net/zhiyi2010/article/details/13017171

http://blog.csdn.net/guolin_blog/article/details/28863651

【android】getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用相关推荐

  1. ANDROID 中UID与PID的作用与区别

    ANDROID 中UID与PID的作用与区别 PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统 ...

  2. Android 项目中文件夹的作用

    Android 项目中文件夹的作用 1. src:存放所有的*.java源程序. 2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3. assets:可 ...

  3. Android Studio 搜索快捷键不起作用

    Android Studio 搜索快捷键不起作用 Ctrl + Shift + F全局查找不起作用. 原因是输入法简繁切换快捷键也是Ctrl + Shift + F,到对应输入法设置中去除简繁切换快捷 ...

  4. 缓存目录的区别getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用

    几行代码即可看出区别: Environment.getDataDirectory() = /data Environment.getDownloadCacheDirectory() = /cache ...

  5. Android布局中 android:layout_gravity=bottom为何不起作用?

    在android布局时我们有时会需要将位于LinearLayout布局中的控件放在布局底部,或者是同时想将几个控件底部对齐,此时我们自然会想到使用 android:layout_gravity=&qu ...

  6. linux下dev目录的作用,Android/Linux根目录下常见目录作用

    当adb shell进入Android系统内部后,ls会看到根目录下出现不少目录,如dev.sys.mnt等目录,对于这些目录的作用常常让人模棱两可,有必要对其学习了解. 首先要明白目录也是一种文件, ...

  7. android:maxHeight,android:maxWidth失效,不起作用

    版权声明:本文为Zhang Phil原创文章,欢迎转载!转载请注明出处:http://blog.csdn.net/zhangphil 在Android的布局文件中,设置某一个view的最大宽和最大高, ...

  8. MTK的Android刷机包各个文件作用

    转:http://blog.csdn.net/loongembedded/article/details/46910087 arm 平台的bootloader 方案mediatek(mt6516/65 ...

  9. android odex 作用,Android ROM中Odex文件的作用及介绍

    细心的网友可能发现Android的ROM中有很多odex文件,相对于 APK中的dex文件而言这个odex有什么作用呢? Android123提示大家,如果你仔细观察会发现文件名时一一对应的,同时那些 ...

最新文章

  1. 最近面试一个6年 Java程序员,一个问题都答不上!
  2. 【UWP】使用 Rx 改善 AutoSuggestBox
  3. POJ1679判断最小生成树的唯一性
  4. 前后端交互概述与URL地址格式
  5. 尽量使用const、enum、inline代替#define
  6. SI 和 DI 寄存器的区别
  7. agpl限制了开源_不要限制您的开源项目的潜力
  8. Hibernate二级缓存配置
  9. java工程师面试经典题目整理
  10. 云图说|华为云自研云数据库GaussDB NoSQL,兼容多款NoSQL接口的数据库服务
  11. CodeSmith使用存档
  12. L1-003 个位数统计 (15 point(s))
  13. 如何区分abcd类地址_ip地址abc类怎么区分
  14. 获取WIN7的trustedinstaller权限
  15. python 安全编码代码审计
  16. 使用Docker容器来搭建LNMP(Nginx+Mysql+php)+Wordpress
  17. 固定成本、可变成本、沉没成本、机会成本
  18. easyExcel导出文件为空解决
  19. 单亲妈妈开米粉店,赚得比当白领的女儿还多,做生意一定要懂方法
  20. 整理一篇很全面的iOS面试题

热门文章

  1. 安装 PHP Memcache 扩展
  2. slatstack Master的配置
  3. [原创]OpenvSwitch安装
  4. Oracle 自己主动诊断资料档案库 (ADR)、自己主动诊断工作流、ADRCI工具
  5. mysql查看数据库和表的占用空间大小
  6. tomcat做成服务
  7. 命令行下的curl使用详解
  8. ubuntu切换JDK版本
  9. 2021浙江英语高考成绩查询,2021浙江高考英语试卷难度如何
  10. Vue + Nodejs + Express 解决跨域的问题