Android私有目录和公有目录

  • Android系统目录结构
  • 存储分类
  • 公有目录和私有目录
  • 应用私有目录
  • 内部空间私有目录
  • 外部空间私有目录
  • 公有目录
  • 参考


Android系统目录结构

Android系统的内核使用的是Linux内核, 所以Android的文件目录结构和Linux系统的文件目录结构类似.Android系统使用虚拟文件系统(VFS), VFS的目录是以/为根节点,根节点下又有不同的节点。而我们的物理存储设备就是挂载都这些节点上,如下图所示:

android app私有目录 android获取私有目录_android app私有目录

  • /data/data/ apk的安装目录。 如:百度地图的安装路径是/data/data/com.baidu.com/ 注意:该目录需要获取root权限才能查看
  • /system/ 存放系统应用的apk文件,即手机厂商预安装应用的apk文件 (手机厂商只需把需要预安装的apk放在该节点的相应路径下,android系统就会自己解压并安装该apk)
    -/storage/ 该节点是内置存储卡和外置SD卡的挂载点,/storage/emulated/0/是内置存储卡挂载点,/storage/sdcard1是外置SD卡(即外插入的SD卡)挂载点(不同的设备挂载节点不一样,有些设备可能会挂载到/mnt/节点)。

存储分类

对于安卓的应用,它的存储路径大致分为以下几类:

android app私有目录 android获取私有目录_linux_02

公有目录和私有目录

公有目录和私有目录是相对于一个或多个应用而言的,基于Android文件系统的权限管理。

应用私有目录

私有目录是指仅某个应用自己可管理访问的文件目录,即该目录归属于该应用。
应用私有的目录主要分布在两个地方内部存储和外部存储。(了解内部存储和外部存储移步Android中的内部存储和外部存储)

/data/data/packagename	# 位于内部存储
/storage/emulated/0/Android/data/packagename	# 位于外部存储

内部空间私有目录

对于每个应用,系统都会在内部存储空间中提供目录,应用可以在该存储空间中整理其文件。一个目录专为应用的持久性文件而设计,而另一个目录包含应用的缓存文件。您的应用不需要任何系统权限即可读取和写入这些目录中的文件。

其他应用无法访问存储在内部存储空间中的文件。这使得内部存储空间非常适合存储其他应用不应访问的应用数据。

但是,请注意,这些目录的空间通常比较小。在将应用专属文件写入内部存储空间之前,应用应查询设备上的可用空间。

外部空间私有目录

如果内部存储空间不足以存储应用专属文件,请考虑改为使用外部存储空间。系统会在外部存储空间中提供目录,应用可以在该存储空间中整理仅在应用内对用户有价值的文件。一个目录专为应用的持久性文件而设计,而另一个目录包含应用的缓存文件。

在 Android 4.4(API 级别 19)或更高版本中,应用无需请求任何与存储空间相关的权限即可访问外部存储空间中的应用专属目录。卸载应用后,系统会移除这些目录中存储的文件。

公有目录

公有目录即非应用私有目录,所有应用均可访问的目录。如位于外部存储中的如下目录:

DIRECTORY_MUSIC # /storage/emulated/0/DCIM 音乐目录 
DIRECTORY_PICTURES 图片目录
DIRECTORY_MOVIES 电影目录
DIRECTORY_DOWNLOADS 下载目录
DIRECTORY_DCIM 相机拍照或录像文件的存储目录
DIRECTORY_DOCUMENTS 文件文档目录

参考

访问应用专属文件解析Android内部存储、外部存储的区别
一篇文章搞懂android存储目录结构