目录

Android手机存储分类

二,内部存储

三,外部存储

私有目录

公有目录

四,数据删除

五,权限相关


android手机存储分类

分为:内部存储和外部存储

如何区分内部存储和外部存储:可以从物理和逻辑区分

从物理的角度区分,内部存储就是手机自带存储空间,外部存储就是外部接入的存储空间例如SD卡

从逻辑意义上区分,data,system 目录就是手机的内部存储,而 mnt 或者 storage目录下的sdcard0指向的sdcard目录就是外部存储。如果是手机自带的外部存储被称为机身外部存储,外置的SD卡则称之为外部存储。当然两者都称为外部存储也没关系。这里描述的内部存储和机身外部存储都属于机身存储;

逻辑区分是从4.4以上版本开始的;

二,内部存储

获取内部存储路径和api对应关系

1,通过Environment

Environment.getDataDirectory()                /data

Environment.getRootDirectory()                /system

Environment.getDownloadCacheDirectory()            /data/cache

2,通过上下文Context

getCacheDir()                /data/user/0/包名/cache

getFilesDir()                  /data/user/0/包名/files

Build.VERSION_CODES.LOLLIPOP及以上版本新增的API

getDir("靓仔", MODE_PRIVATE)              /data/user/0/包名/app_靓仔

getNoBackupFilesDir()                             /data/user/0/包名/no_backup

getCodeCacheDir()                                  /data/user/0/包名/code_cache

Build.VERSION_CODES.N及以上版本新增的API

getDataDir()                                    /data/user/0/包名

特点:

1、内部存储路径中的文件是分类存储的,我们无法干涉,除了cache目录,别的目录系统不会自动创建

2、除了files目录,别的目录我们几乎都是无法手动操作的

3、别的App几乎无法访问内部存储中的数据,除了用非法手段或者我们主动暴露

4、内部存储目录下的文件夹及文件会随着app的卸载而被系统自动删除

三,外部存储

外部存储又可分为共有目录和私有目录;

私有目录

私有目录:不需要访问权限

Android 在外部存储空间中也提供了特殊目录供App存放私有文件,该路径为:/storage/emulated/0/Android/data/包名/

注意:应用安装之后/storage/emulated/0/Android/data/是没有对应的应用文件夹的,需要手动调用对应的API创建;

获取私有目录路径

getObbDir()                           /storage/emulated/0/Android/obb/包名

getExternalCacheDir()          /storage/emulated/0/Android/data/包名/cache

getExternalFilesDir(null)       /storage/emulated/0/Android/data/包名/files

公有目录

公有目录:需要申请权限才能访问

权限:6.0以上需要动态申请

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

获取共有目录的API 29中已过时:

Api 路径
Environment.getExternalStorageDirectory()   /storage/emulated/0

Environment.getExternalStoragePublicDirector(Environment.DIRECTORY_DOWNLOADS)

获取共有目录,例如Download共有目录

/storage/emulated/0/Download

官方的解释:

在API级别29中不赞成使用此方法。为了提高用户隐私,不建议直接访问共享/外部存储设备。当应用定位到时 Build.VERSION_CODES.Q,此方法返回的路径不再可供应用直接访问。应用程序可以继续访问内容通过迁移到替代品,如存储在共享/外部存储 Context#getExternalFilesDir(String), MediaStore或Intent#ACTION_OPEN_DOCUMENT。

注意:如果手机插入SD卡,可通过getExternalFilesDirs或getExternalCacheDirs遍历来获取路径;

四,数据删除

CLEAR DATA(删除数据): 清除的是 data/data/对应程序包名 的文件夹下的所有的文件全都会被删除,mnt/sdcard/Android/对应程序包名 下的所有的数据也都会被删除。

CLEAR CACHE(清空缓存): 清除的数据是 data/data/对应程序包名/catch 目录下的数据,还有 mnt/sdcard/Android/对应程序包名/catch目录下的数据

五,权限相关

在android 6.0以前,你可以只关注外置存储是否挂载即可,但是从6.0以后,也就是M系统后,还需要判断是否有读写权限,只有具备这些权限才可以读写外置存储。

1,Context.getRootDirectory

获取路径:/system
默认存在,不可读写(除非具备root权限)

2,Environment.getDownloadCacheDirectory

获取路径:/cache
默认存在,声明权限则可读写(6.0和以后系统还需要向用户申请同意才可以)

3,Context.getFilesDir

获取路径:/data/user/0/包名/files
该目录是应用的文件存储目录,应用被卸载时,该目录一同被系统删除。默认存在,默认具备读写权限(6.0系统可以不用向用户申请)

4,Context.getCacheDir

获取路径:/data/user/0/包名/cache
该目录是应用的文件缓存目录,应用被卸载时,该目录一同被系统删除。默认存在,默认具备读写权限。不同于getFileDir,该目录下的文件在系统内存紧张时,会被清空文件,来腾出空间供系统使用,著名的图片加载库ImageLoader就是在没有外置存储读写权限时使用此文件夹。getFileDir,不会因为系统内存不足而被清空。(6.0系统可以不用向用户申请)

5,Context.getDir

获取路径:/data/user/0/应用包名/app_参数名
默认存在,可读写。分为Private等三个权限,private代表仅能自己访问。(6.0系统可以不用向用户申请)

6,Context.getCodeCacheDir

获取路径:/data/user/0/包名/code_cache
默认存在,可读写。(6.0系统可以不用向用户申请)

7,getNoBackupFilesDir()

获取路径: /data/user/0/包名/no_backup
默认存在,可读写。(6.0系统可以不用向用户申请)

8,Context.getObbDir

获取路径:/storage/emulated/0/Android/obb/包名 
该目录是应用的数据存放目录,一般被用来存放游戏数据包obb文件。默认存在,可读写(6.0系统可以不用向用户申请)

9,Context.getExternalCacheDir

获取路径:/storage/emulated/0/Android/data/应用包名/cache
默认存在,可读写。(6.0系统可以不用向用户申请)

10,Context.getExternalFilesDir

获取路径:(以下载目录为准) /storage/emulated/0/Android/data/应用包名/files/Download
默认存在,可读写。(6.0系统可以不用向用户申请)

11,Environment.getExternalStorageDirectory

获取路径:/storage/emulated/0
默认存在,声明权限则可读写(6.0和以后系统还需要向用户申请同意才可以)

12,Environment.getExternalStoragePublicDirectory

获取路径:/storage/emulated/0/Download(以下载目录为例)
默认存在,声明权限则可读写(6.0和以后系统还需要向用户申请同意才可以)

13,Context.getDatabasePath

获取路径:/data/user/0/包名/databases/参数名
默认不存在,可读写。(6.0系统可以不用向用户申请)

14,Context.getPackageCodePath

获取路径:/data/app/包名-1/base.apk
默认存在,获取apk包路径

15,Context.getFileStreamPath

获取路径:/data/data/包名/files/download(示例download)
该目录是应用的文件存储目录,应用被卸载时,该目录一同被系统删除。默认存在,默认具备读写权限(6.0系统可以不用向用户申请)

附注:

a)上述路径是通过getAbsulotePath方法获得,一般情况下等同于getPath
b)在6.0系统上,一般Java层实现对外置存储的文件操作需要向用户申请,如果用C层实现,则可以越过这种限制
c)配置compilesdk,targetsdk低于23,可以避免在6.0手机上的权限限制

Android 手机存储及路径相关推荐

  1. android获取存储设备根目录,浅谈android获取存储目录(路径)的几种方式和注意事项...

    通常, 我们创建文件/目录, 或者存储图片什么的, 我们都需要拿到手机的存储路径, 现在我们就来看一下获取手机存储路径的几种方式(作为工具类方法调用即可): 第一种: 获取 /storage/emul ...

  2. Android 手机存储相关内容

    应用操作的文件存储位置分为三个部分: 1.应用内部存储私有文件目录 2.应用外部存储私有文件目录 3.公有目录 Android手机存储分为两个部分:内部存储和外部存储,内部存储一般是手机自带的存储空间 ...

  3. Android手机存储路径

    手机存储 手机分为内部存储和外部存储 1.内部存储 主要方法 路径 Environment.getDataDirectory() /data Environment.getDownloadCacheD ...

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

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

  5. android app根目录下cache,Android 手机存储目录详解

    一.手机存储 (一)内置私有存储,手机需root后才能看到 获取路径的方法 1.getFilesDir() /data/data/[packagename]/files 文件缓存目录,一般存小的文件缓 ...

  6. Android 手机存储 --------内存/外存/缓冲

    每日一言:当下的付出,是明日的花卉. Android 存储路径 Log.d("内置SD卡路径:指定图片保存的路径",Environment.getExternalStorageDi ...

  7. android 手机存储 目录,android 62 手机存储目录的划分

    android下应用程序的路径和javase不同,应用程序的数据要保存自己的文件夹里面 > > getFileDir(); 获取自己的文件夹 /data/data/包名(应用程序的名字)/ ...

  8. linux电脑访问android手机存储

    系统软件确认: 手机:android 系统 电脑:linux 系统 (测试手机 android7.1.2,电脑 debian9.2,其他没测试过) 手机端设置: 手机usb线连接电脑,usb 使用方式 ...

  9. android手机存储优化,Android手机系统优化方法

    Android手机系统优化方法 对手机进行优化,可以让手机运行的更快.那么Android手机系统优化方法呢?下面就让jy135小编来告诉大家吧,欢迎阅读. 1.手机一键优化:包含内存占用.手机存储.系 ...

最新文章

  1. 英伟达人工智能和处理器驱动的制药、生命科学合作
  2. DP_字串匹配(HDU_1501)
  3. iOS探索:Block解析浅谈
  4. 适用于高级Java开发人员的十大书籍
  5. python代理池好难啊_新人不会自己搭建代理池?快来引用大佬的
  6. python入门-分类和回归各种初级算法
  7. Python+OpenGL进行立方体多纹理映射
  8. 二叉搜索树c++_LeetCode98验证二叉搜索树
  9. 2021年SWPUACM暑假集训day1二分算法
  10. LeetCode算法题-House Robber(Java实现)
  11. win7便签的字体设置
  12. 合天网安《Weekly CTF》第四周
  13. 流量宝流量真实有效吗?实测刷流量百度和CNZZ哪个更精准
  14. 并行计算、分布式计算、网格计算讲解
  15. Android应用 开机自启动
  16. 视频转换格式 qlv 转 mp4 详解
  17. 利用ADS快速设计低噪放
  18. yoctoqemu(十二)openssh
  19. 关于买房的后的人生感悟
  20. 计算机考研只考一门“软件工程”的院校汇总

热门文章

  1. APP后台服务器阿里云Win系统服务器搭建的方法
  2. 叶念琛告诉你什么是爱情。。。
  3. 使用libxl库读取excel文件
  4. RocketMq的perm属性
  5. 性能测试能力提升-JVM GC原理
  6. 测试手机硬件检测软件是什么,手机硬件检测工具_手机硬件检测软件_手机硬件检测软件哪个好【最新】-太平洋电脑网...
  7. java ppt转换为html5,Apache POI PPT - PPT转换为图片
  8. java程序员培训学习需要多长时间
  9. [Excel常用函数] countif countifs函数
  10. HBase批量写入数据