美文网首页
Android SdCard路径说明

Android SdCard路径说明

作者: ByteCarry | 来源:发表于2019-04-14 14:24 被阅读0次

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 ...

参考文档

  1. https://imnotyourson.com/which-storage-directory-should-i-use-for-storing-on-android-6/
  2. https://developer.android.com/training/data-storage/files#InternalVsExternalStorage

相关文章

网友评论

      本文标题:Android SdCard路径说明

      本文链接:https://www.haomeiwen.com/subject/sfzjwqtx.html