上一篇
安卓存储路径文件夹
- 行业动态
- 2025-04-22
- 5
安卓存储路径文件夹详解
内部存储(Internal Storage)
- 路径:
/data/data/<包名>/
- 描述:
- 每个应用安装后独有的私有目录,其他应用无法直接访问。
- 存储应用运行时产生的文件(如数据库、缓存、配置文件等)。
- 读写权限:
应用默认拥有读写权限,无需额外申请。
- 常见子目录:
/databases
:存放SQLite数据库文件。/shared_prefs
:存储SharedPreferences文件。/cache
:临时缓存文件(系统可自动清理)。/files
:应用私有文件存储区。
外部存储(External Storage)
- 路径:
- 传统路径:
/sdcard/
(Android 10前常用)。 - 标准路径:
/storage/emulated/0/
(Android 4.4+)。
- 传统路径:
- 描述:
- 公共存储空间,所有应用均可读写(需声明权限)。
- 用户可手动管理文件(如通过文件管理器)。
- 读写权限:
- 需在
AndroidManifest.xml
中声明READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
。 - Android 13+需动态申请权限。
- 需在
常见数据目录
环境变量 | 实际路径 | 用途 |
---|---|---|
EXTERNAL_STORAGE |
/storage/emulated/0/ |
外部存储根目录 |
EXTERNAL_DOWNLOADS |
/storage/emulated/0/Download/ |
下载文件存放目录 |
EXTERNAL_DCIM |
/storage/emulated/0/DCIM/ |
相机拍摄图片/视频目录 |
EXTERNAL_PICTURES |
/storage/emulated/0/Pictures/ |
图片存储目录 |
APP_DATA_DIR |
/data/data/<包名>/ |
应用私有数据目录 |
APP_CACHE_DIR |
/data/data/<包名>/cache/ |
应用缓存目录 |
Android版本差异
- Android 10(Q)及以上:
- 强制启用分区存储(Scoped Storage),应用默认只能访问自己的私有目录。
- 访问公共目录需通过
Storage Access Framework
或声明MANAGE_EXTERNAL_STORAGE
权限。
- Android 11+:
- 进一步限制对
/sdcard
的直接访问,推荐使用MediaStore
API操作媒体文件。
- 进一步限制对
特殊路径说明
- 应用专属外部存储目录:
- 通过
getExternalFilesDir()
获取,路径类似/storage/emulated/0/Android/data/<包名>/
。 - 无需申请存储权限,数据仅当前应用可见。
- 通过
- 系统根目录:
/system
:系统核心文件(需Root权限)。/proc
:进程信息虚拟文件系统。/etc
:系统配置文件。
相关问题与解答
问题1:如何判断设备是否存在SD卡?
解答:
可通过Environment.getExternalStorageState()
方法检测:
String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { // SD卡已挂载,可读写 } else if (state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { // SD卡仅支持读操作 } else { // SD卡不可用(未挂载或无权限) }
问题2:Android 10+如何适配分区存储?
解答:
- 使用Scoped Storage:
- 将文件保存到应用专属目录(如
getExternalFilesDir()
),无需额外权限。 - 访问共享文件时,使用
ACTION_OPEN_DOCUMENT
或ACTION_CREATE_DOCUMENT
Intent。
- 将文件保存到应用专属目录(如
- 请求MANAGE_EXTERNAL_STORAGE权限:
- 在
AndroidManifest.xml
中声明<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
。 - 引导用户手动授权(需谨慎使用,可能被Google Play拒绝)。
- 在