Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中。 
在Android系统中如何获得存储的路径呢?

public static void getRootPath(Context context) {Log.d("ExternalDirectory->", Environment.getExternalStorageDirectory().getPath());Log.d("ExternalCacheDir->", context.getExternalCacheDir().getPath());Log.d("CacheDir->", context.getCacheDir().getPath());Log.d("FilesDir->", context.getFilesDir().getPath());}

以上对应的输出结果为

ExternalDirectory->: /storage/emulated/0
ExternalCacheDir->: /storage/emulated/0/Android/data/zhuwentao.com.pathdemo/cache
CacheDir->: /data/data/zhuwentao.com.pathdemo/cache
FilesDir->: /data/data/zhuwentao.com.pathdemo/files

应用的缓存建议存储在通过getExternalCacheDir().getPath()获取的路径中,这里的zhuwentao.com.pathdemo会根据你的应用程序包名不同会有差别,存在这个路径,主要有以下几个好处 
一:该路径是在SD卡中,所以不用担心手机内置存储空间不足,只要SD卡够大就行。 
二:该路径是Android系统默认的应用缓存路径,对应手机应用设置里面应用详情的“清除缓存”和“清除数据”按钮。 
三:当我们卸载应用时,该路径下的数据也会被清空,这样就避免了有些应用卸载后还有残留数据的问题。

如果需要保存用户下载的数据,就不建议存储在getExternalCacheDir()中了,可以在Environment.getExternalStorageDirectory()下新建一个文件夹,用来存储用户下载的数据。

我们在选择存储路径的时候,还要考虑到用户的手机是否有SD卡,再进行选择,通过以下代码判断用户是否有SD卡:

  /*** 获取手机可存储路径* @param context 上下文* @return 手机可存储路径*/public static String getRootPath(Context context) {// 是否有SD卡if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)|| !Environment.isExternalStorageRemovable()) {return context.getExternalCacheDir().getPath(); // 有} else {return context.getCacheDir().getPath(); // 无
        }}

如果有SD卡或者SD卡不可被移除的时候则获取SD卡下的路径,没有则获取应用程序缓存路径。

有时候getExternalStorageDirectory()怎么也获取不到外置SD卡,这是为何呢? 
在Android4.0之前Environment.getExternalStorageDirectory()获取到的是外置SD卡路径,而在4.0之后由于很多手机的自带内存已经很大了,不需要外置SD卡,所以Android就把内置的内存分一部分出来当作SD卡使用了,导致不同版本的Android系统获取到的SD卡路径会存在差异。

需要注意的是,各个手机厂商的SD卡路径也是会存在差异的,有些手机获取到的路径是“/mnt/sdcard/…”,而有的获取的是“/storage/sdcard0/…”所以绝对不能写死SD卡的路径。

Android 存储路径选择相关推荐

  1. android手机 存储路径设置在哪里找,Android 存储路径选择方法

    Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中. 在Android系统中如何获得存储的路径呢? p ...

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

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

  3. Android存储访问及目录

    原文:Android存储访问及目录 Android存储访问及目录 Android的外部存储 Android支持外部存储(case-insensitive filesystem with immutab ...

  4. Android 存储路径浅析

    Android 文件系统 在 Android Studio 可以在 DDMS 的 File Exploer 窗口中查看文件系统,下图就是一个 Android 文件系统目录. Android 存储分类 ...

  5. Android技能树 — Android存储路径及IO操作小结

    前言 最近过年刚上来,打算把自己的Android知识都整理一下. Android技能书系列: Android基础知识 Android技能树 - 动画小结 Android技能树 - View小结 And ...

  6. Android存储子系统

    这篇文章主要是分析Android存储向关联的一些模块,这个分析主要从大的工作流程和代码模块分析,没有对于没有分析到地方后续遇到后在详细分析.主要从以下几个模块分析 系统分区的挂载.外部分区挂载.Vol ...

  7. Android存储子系统流程--vold

    转:http://my.oschina.net/xcy2011sky/blog/492590?fromerr=Te05DFLK 目录[-] 系统分区挂载 外置分区挂载 Vold守候进程分析 Ueven ...

  8. Android存储路径解析

    本文讲的是Android存储路径,当需要存储文件或者清除缓存时可以看一下,下面是原文链接,复制一份以防意外 彻底搞懂Android文件存储-内部存储,外部存储以及各种存储路径解惑 前言: 对于任何一个 ...

  9. Android 存储设备管理 -- StorageManager

    上图关系为: StorageManager为Client,MountService是Server,通过AIDL进行进程间通信. MountService是一个Android Service,由syst ...

最新文章

  1. 技术图文:如何利用 Python 做一个简单的定时器类?
  2. [Swust OJ 404]--最小代价树(动态规划)
  3. AJAX (异步 javascript 和 xml)
  4. maven打包jar单独配置log4j.properites文件记录日志
  5. 怎么对Java服务进行调优的?
  6. 又收集了一个字体图标站
  7. svn文件大小类型限制,提交必须加多少字的说明
  8. 哈工大理论力学第八版电子版_校史上的这些天(37)| 和你一起在“岁月”中读懂哈工大...
  9. Android应用开发:CardView的使用及兼容
  10. 【人工智能】深度学习专项课程精炼图笔记!必备收藏
  11. Django中间件简析
  12. 苹果mac最好用的视频下载软件:Downie 4
  13. ISD9160学习笔记08_结项总结
  14. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作3D 立体图片动画效果~~适合初学者~超简单~ |前端开发|IT软件
  15. MySQL数据库报错:no database selected
  16. html5 拖拽 编辑 插件,超给力 Vue.js 可视化H5拖拽编辑器Quark-H5
  17. opengl 雷霆战机 2d
  18. mysql按升序创建索引_MySQL 降序索引 (Descending Indexes)
  19. Linux云计算运维之Shell
  20. 处理unity第一第三人称游戏中的摄像机穿墙的问题

热门文章

  1. java短横线转驼峰_第二讲:Java的运作原理
  2. 考研国家线罕见大幅上涨,12个学科涨幅10分以上,超300万人将落榜
  3. GitHub免费提供机器学习扫描代码漏洞,现已支持JavaScript/TypeScript
  4. 诺顿360“偷偷”挖矿被怒喷,杀毒软件手伸向GPU,官方:都是为了用户好
  5. 电脑插个“U盘”就能给基因测序,实时查看结果,售价1000美元
  6. 苹果用户可以自修手机了!原厂零件工具都能买,网友:iScrew螺丝刀600多块?...
  7. 北大清华“合并开班”:AI大牛朱松纯带队,面向元培和自动化系招生
  8. 专治“炼丹侠”各种不服:1分钟就能搞个AI应用 | 最新开源深度学习框架工具套件TinyMS问世...
  9. 中国博士开发可交互全球疫情地图,登上柳叶刀,GitHub已有4500星成为热榜第四...
  10. 滴滴自动驾驶,现在是一个怎样的“富二代”创业项目?