1. 存储介绍
  2.  
  3. Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足。一般我们存储内容都会放在外部存储空间里。使用过程注意事项:
  4.  
  5. 先判断SD卡是否可用,可用时优先使用SD卡的存储,不可用时用内部存储
  6. 存储在SD卡上时,可以在SD卡上新建任意一个目录存放,也可以存放在应用程序内部文件夹,区别是在SD卡的任意目录存放时内容不会随应用程序的卸载而消失,而在应用程序内部的内容会随应用程序卸载消失。
  7. 一般缓存文件放在应用程序内部,用户主动保存的文件放在SD卡上的文件夹里。如果在SD卡上任意新建目录存放所有数据,用户卸载时会残存大量文件,招致用户反感。
  8.  
  9. 存储路径
  10.  
  11. 一般我们可以通过 Context Environment 相关的方法获取文件存取的路径。
  12. 1.内部存储
  13.  
  14. 1.1 根目录($rootDir):/data,通过 Environment.getDataDirectory() 获取。
  15. 1.2 应用程序目录($applicationDir):$rootDir/data/包名(不一定,不同设备可能不同)
  16. 应用缓存目录:$applicationDir/cache,通过Context.getCacheDir()获取。
  17. 应用文件目录:$applicationDir/files,通过Context.getFilesDir()获取。Context.getFileStreamPath(String name)返回以name为文件名的子文件目录,若name为空,则返回文件根目录。假设我们的应用程序包名为com.learn.test,路径如下:
  18.  
  19. Environment.getDataDirectory(): /data
  20. Context.getCacheDir(): /data/data/com.learn.test/cache
  21. Context.getFilesDir(): /data/data/com.learn.test/files
  22. Context.getFileStreamPath(""): /data/data/com.learn.test/files
  23. Context.getFileStreamPath("test"): /data/data/com.learn.test/files/test
  24.  
  25. 2.外部存储
  26.  
  27. 2.1 根目录($rootDir):/storage/emulated/0(不一定,不同设备可能不同),通过 Environment.getExternalStorageDirectory() 获取。
  28. 2.2 应用程序目录($applicationDir):$rootDir/Andorid/data/包名
  29. 应用缓存目录:$applicationDir/cache,通过Context.getExternalCacheDir()获取。
  30. 应用文件目录:$applicationDir/files,通过Context.getExternalFilesDir(String type),type为空字符串时获取。type系统给我们提供了很多常用的类型,比如图片和下载等等:
  31.  
  32. public static String DIRECTORY_MUSIC = "Music";
  33. public static String DIRECTORY_ALARMS = "Alarms";
  34. public static String DIRECTORY_NOTIFICATIONS = "Notifications";
  35. public static String DIRECTORY_PICTURES = "Pictures";
  36. public static String DIRECTORY_MOVIES = "Movies";
  37. public static String DIRECTORY_DOWNLOADS = "Download";
  38. public static String DIRECTORY_DCIM = "DCIM";
  39. public static String DIRECTORY_DOCUMENTS = "Documents";
  40.  
  41. 假设我们的应用程序包名为com.learn.test,路径如下:
  42.  
  43. Environment.getExternalStorageDirectory(): /storage/emulated/0
  44. Context.getExternalCacheDir(): /storage/emulated/0/Android/data/com.learn.test/cache
  45. Context.getExternalFilesDir(""): /storage/emulated/0/Android/data/com.learn.test/files
  46. Context.getExternalFilesDir("test"): /storage/emulated/0/Android/data/com.learn.test/files/test
  47. Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Android/data/com.learn.test/files/Pictures
  48.  
  49. 2.3 公共存储目录: 我们可以在外部存储上新建任意文件夹,不过在6.0及之后的系统需要动态申请权限,这些目录的内容不会随着应用的卸载而消失。如:
  50.  
  51. Environment.getExternalStorageDirectory(): /storage/emulated/0
  52. Environment.getExternalStoragePublicDirectory(""): /storage/emulated/0
  53. Environment.getExternalStoragePublicDirectory("test"): /storage/emulated/0/test
  54. Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Pictures

Android存储及getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()区别的更多相关文章

  1. Android存储及getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()区别:

    存储介绍: Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足.一般我们存储内容都 ...

  2. Android存储扩展学习-----应用的清除数据和清除缓存

    前几天和朋友聊到了APP清除数据这块,聊到了清除数据都会清掉哪些数据,我们每个人的手机在”设置–>应用管理”里面,选择任意一个App,都会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我 ...

  3. 一篇文章搞懂android存储目录结构

    前言 前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安 ...

  4. Android存储访问及目录

    Android存储访问及目录 Android的外部存储 Android支持外部存储(case-insensitive filesystem with immutable POSIX permissio ...

  5. Android存储路径你了解多少?

    在了解存储路径之前,先来看看Android QQ的文件管理界面,了解一下QQ的数据文件路径来源,到底是来源于什么地方? 手Q文件管理对应存储目录 我的文件:是指放在QQ指定目录下的文件:/tencen ...

  6. Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)

    本文出自:http://blog.csdn.net/dt235201314/article/details/73176149 源码下载欢迎Star(updating):https://github.c ...

  7. pc端和android端应用程序测试有什么区别?(ps面试题)

    pc端和android端应用程序测试有什么区别?(ps面试题) [VIP7]大连-凭海临风(215687736) 2014/4/10 8:56:171.测试环境不同PC平台一般都是windows an ...

  8. android中activity.this跟getApplicationContext的区别

    转载: http://www.myexception.cn/android/1968332.html android中activity.this和getApplicationContext的区别 在a ...

  9. Android存储之SQLite数据库

    Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...

随机推荐

  1. spring.factories spring.schemas spring.handlers spring自动装配

    org.springframework.core.io.support.SpringFactoriesLoader —— public static final String FACTORIES_RE ...

  2. MQTT研究之EMQ:【EMQX使用中的一些问题记录(2)】

    我的测试环境: Linux: CentOS7 EMQX:V3.2.3 题外话: 这里主要介绍Websocket的支持问题. 对ws的支持比较正常,但是对wss的支持,调了较长的时间,没有成功. Jav ...

  3. k8s记录-kubectl常用命令

    kubectl kubectl annotate – 更新资源的注解.kubectl api-versions – 以“组/版本”的格式输出服务端支持的API版本.kubectl apply – 通过 ...

  4. LwIP应用开发笔记之七:LwIP无操作系统HTTP服务器

    前面我们实现了TCP服务器和客户端的简单应用,接下来我们实现一个基于TCP协议的应用协议,那就是HTTP超文本传输协议 1.  HTTP协议简介   超文本传输协议(Hyper Text Transf ...

  5. SonarQube - 安装与运行SonarQube

    1 - 下载SonarQube SonarQube有多个版本,其中CE(Community Edition)版本免费开源,其余的开发者版本.企业版本和数据中心版本都是收费版本. 官网下载:https: ...

  6. SpringBoot示例教程(一)MySQL与Mybatis基础用法

    示例需求 在Springboot2框架中,使用Mysql和Mybatis功能:1. Mysql+Datasource集成2. Mybatis+XML用法详解 数据库准备 采用了Oracle中的scot ...

  7. docker swarm集群搭建及使用Portainer、shipyard

    一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1   localhost 192.168. ...

  8. 【LOJ523】[LibreOJ β Round #3]绯色 IOI(悬念)(霍尔定理_基环树)

    题目 LOJ523 官方题解 分析 由于某些原因,以下用「左侧点」和「右侧点」分别代替题目中的「妹子」和「男生」. 根据题意,显然能得出一个左侧点只能向一个或两个右侧点连边.这似乎启发我们把左侧点不看 ...

  9. Python之logging.basicConfig函数各参数

    filename: 指定日志文件名 filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a' format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所 ...

  10. Linux系统 关机/重启/用户切换/注销,用户管理(用户创建/修改,用户组增加/删除),Linux中 / 和 ~ 的区别

    1.关机/重启命令 shutdown命令 shutdown -h now :立即关机 shutdown -h 1 :1分钟后关机 shutdown -r now :立即重启 shutdown -r 1 ...