安卓存储分内部(含系统核心文件/应用数据)与外部(用户文件)。/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清理数据库