Android文件系统目录结构
- Android中主要的存储分区有/data /storage /sdcard
/data 内部存储分区
Android应用会安装到该分区,执行恢复出厂设置时会清空该分区
/data 会包含两个目录/data和/app
- /app
存储所有应用包的apk文件
- /data
每个应用的私有存储目录,根据包名区分
/storage 外部存储分区
包含两个目录emulated/, self/
- emulated/
用户外部存储
- self/
当前用户()标识符, 是Android 4.2+多用户中的用户
/storage/emulated/0/ 实际上是指向手机内部存储(区别手机SdCard)虚拟文件路径(Linux中一切皆文件)。所以/storage/emulated/0/xxx直接在手机内部存储根目录下查找xxx即可。
/sdcard 存储卡
/sdcard/ 和 mnt/sdcard都是Android6.0+上的/storage/self/primary的链接符号(虚拟的)./sdcard最终链接到/storage/emulated/0,/sdcard分区是从固定存储上分割的主外部存储,如果你还有另外一张真实的物理SdCard,那么它会作为第二外部存储被划分到/storage分区。
- 其他还有,右半部分是实际物理目录
/sdcard ---> /storage/self/primary
/mnt/sdcard ---> /storage/self/primary
/storage/self/primary ---> /mnt/user/0/primary
/mnt/user/0/primary ---> /storage/emulated/0
内外存储区分主要在权限粒度上不同,内部存储区不能被随意访问,App也只能访问自己私有的包目录,即使手机上没有SdCard,也需要划分出外部存储区,最新的Android手机设备甚至取消了SdCard卡槽。
- 内部存储
/data/data/your.package/
应用私有目录,只有自己能够访问,会随着应用卸载被删除
- 公共外部存储
/storage/emulated/0
所有应用都可以访问的公共空间,不会随着应用卸载被删除。
- 私有外部存储
/storage/emulated/0/Android/data/your.package/
应用私有目录,只有自己能够访问,会随着应用卸载被删除.
存储相关的APi
内部存储
- Context.getCacheDir() - /data/data/your.package/cache/
- Context.getFilesDir() - /data/data/your.package/files/
私有外部存储
- context.getExternalCacheDir() - /storage/emulated/0/Android/data/your.package/cache/
- context.getExternalFilesDir() - /storage/emulated/0/Android/data/your.package/files/
公共外部存储
- Environment.getExternalStorageDirectory() - /storage/emulated/0/
- Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM ...) - /storage/emulated/0/DCIM ...
网友评论