安卓存储分内部(含系统核心文件/应用数据)与外部(用户文件)。/Android存系统配置,/Data存应用安装文件,/Sdcard为主
存储区,各文件夹按功能分类管理数据
安卓存储中的核心文件夹结构
内部存储(Internal Storage)
路径 |
用途说明 |
系统根目录,包含操作系统核心文件和配置 |
/data/data/ |
应用私有存储目录,每个应用安装后生成独立文件夹(如com.tencent.mobile ) |
/data/user/0/ |
当前用户的应用数据目录(Android 8+多用户支持) |
/storage/emulated/0/ |
内部存储的虚拟路径(Android 10+作用变化) |
外部存储(External Storage)
路径 |
用途说明 |
/sdcard/ |
传统SD卡根目录(物理存储设备) |
/storage/ |
虚拟化外部存储入口,包含emulated (虚拟分区)和真实挂载点(如sda1 ) |
Environment.getExternalStorageDirectory().getPath() |
程序获取外部存储公共目录的标准API返回路径 |
应用专属目录结构
路径 |
用途说明 |
/data/data/包名/ |
应用私有存储空间(数据库/SharedPreferences默认存储位置) |
/data/data/包名/files/ |
应用内部文件存储目录(通过openFileOutput() 创建) |
/data/data/包名/cache/ |
应用缓存目录(系统可自动清理) |
/storage/emulated/0/Android/data/包名/ |
Android 10+应用外部存储私有目录(需申请权限) |
系统关键文件夹
路径 |
用途说明 |
/Android/ |
系统级配置目录 |
/Android/data/ |
应用外部存储数据目录(需手动创建) |
/Android/obb/ |
扩展资源包存储位置(用于大型游戏资源) |
/Android/cache/ |
系统级缓存目录 |
存储权限演进对比表
特性 |
Android 9及以下 |
Android 10+ Scoped Storage |
Android 11+ |
外部存储访问 |
全局读写权限(WRITE_EXTERNAL_STORAGE ) |
分沙盒的app专用目录 |
进一步强化沙盒机制 |
应用私有外部存储 |
无概念 |
/sdcard/Android/data/ |
同上,新增媒体扫描规则 |
公共目录写入 |
任意位置写入 |
仅限media 等特定目录 |
需使用MediaStore API |
常见问题与解答
问题1:Android 10+应用如何访问外部存储的下载目录?
解答:

- 使用
MediaStore.Downloads.EXTERNAL_CONTENT_URI
URI操作
- 通过
Context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
获取应用专属下载目录
- 公共下载目录路径为
/sdcard/Download/
,但直接访问需声明MANAGE_EXTERNAL_STORAGE
权限(已废弃)
问题2:为什么应用卸载后部分文件依然存在?
解答:

- 残留场景:
- 存储在
/sdcard/
公共目录下的文件(如Download、DCIM)
- 使用
MODE_WORLD_READABLE
创建的文件
- 通过
FILE_CREATOR_ACTIVITY_PENDING
临时保存的文件
- 解决方案:
- 重要文件应存储在应用私有目录(
getFilesDir()
)或申请持久化权限
- 使用
Context.deleteDatabase()
等API清理数据库