安卓存储结构图解析
内部存储(Internal Storage)
路径 | 说明 | 访问权限 |
---|
/data/data/<package_name> | 应用私有目录,存储应用数据库、SharedPreferences、文件等 | 仅限本应用访问 |
/data/data/<package_name>/cache | 应用缓存目录,系统可自动清理 | 仅限本应用访问 |
/data/data/<package_name>/files | 应用内部文件存储目录(通过openFileOutput 写入) | 仅限本应用访问 |
/data/data/<package_name>/databases | 应用数据库文件存储目录 | 仅限本应用访问 |
/data/data/<package_name>/shared_prefs | 应用SharedPreferences文件存储目录 | 仅限本应用访问 |
外部存储(External Storage)
路径 | 说明 | 访问权限 |
---|
/storage/emulated/0 | 虚拟外部存储根目录(兼容旧设备/mnt/sdcard ) | 需READ_EXTERNAL_STORAGE /WRITE_EXTERNAL_STORAGE 权限(Android Q+需特殊处理) |
/storage/emulated/0/Android | 系统保留目录,包含data (应用专属目录)和obb (扩展资源包) | 仅限系统和应用自身访问 |
/storage/emulated/0/Pictures | 公共图片目录 | 需存储权限 |
/storage/emulated/0/Downloads | 下载文件目录 | 需存储权限 |
/storage/emulated/0/DCIM | 相机拍摄图片/视频目录 | 需存储权限 |
系统目录
路径 | 说明 | 访问权限 |
---|
/system | 系统核心文件(ROM) | 仅Root或系统进程可写 |
/vendor | 厂商定制文件(SoC驱动等) | 仅Root或系统进程可写 |
/proc | 进程信息虚拟文件系统 | 只读 |
/sys | 内核参数配置接口 | 只读 |
/dev | 设备文件目录 | 仅限系统进程访问 |
特殊用途目录
路径 | 说明 | 访问权限 |
---|
/cache | 系统级缓存目录(如APK安装包临时存储) | 仅限系统进程写入 |
/etc | 系统配置文件 | 只读 |
/sbin | 系统工具(如恢复模式相关) | 仅限Root执行 |
相关问题与解答
Q1:Android Q(API 29)后如何访问外部存储的共享目录?
A1:Android Q引入Scoped Storage,应用默认只能访问自己的外部存储空间(/storage/emulated/0/Android/data/<package_name>
),若需访问公共目录(如Downloads
),需:

- 在
AndroidManifest.xml
中声明MANAGE_EXTERNAL_STORAGE
权限(需用户手动授权); - 或使用
Storage Access Framework
(如Intent.ACTION_OPEN_DOCUMENT_TREE
)获取文件URI。
Q2:应用如何存储临时文件以避免被系统清理?
A2:
- 内部存储缓存:使用
getCacheDir()
获取路径(/data/data/<package>/cache
),系统卸载应用时会自动删除; - 外部存储缓存:写入
/storage/emulated/0/Android/data/<package>/cache
,需声明WRITE_EXTERNAL_STORAGE
权限; - 注意事项:
- 不要将重要文件存入缓存目录;
- Android系统可能会在存储空间不足时清理