安卓存储结构图解析
内部存储(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系统可能会在存储空间不足时清理