Android存储路径
先来看一张大图:
内部存储
Environment.getDataDirectory().getParentFile();也就是根目录,一般就是指/data/data目录下的数据,需要root之后可以看见
- /data/app
该文件存放着系统中安装的第三方应用apk
Android的应用安装就是将应用安装包拷贝到/data/app目录下面,每个包本质是一个zip压缩文件。为了提升启动效率,Android会将解压的dex提取出来,缓存在/data/dalvik-cache目录下
api | 路径 |
---|---|
getDataDirectory() | /data |
getDownloadCacheDirectory() | /cache |
getRootDirectory() | /system |
- /data/data
该文件夹存放存储包==私有数据==,对于设备中每一个安装的App,系统都会在内部存储空间的 data/data 目录下以应用包名为名字自动创建与之对应的文件夹。用户卸载 App 时,系统自动删除data/data目录下对应包名的文件夹及其内容。该目录下又把存储内容进行了分类:
地址 | 说明 | api |
---|---|---|
data/data/包名/cache | 存放缓存信息 | context.getCacheDir() |
data/data/包名/database | APP数据库信息 | context.getDataDir() / context.getDatabasePath(name) |
data/data/包名/files | 存放APP的文件信息 | context.getFilesDir() |
外部存储
每个兼容 Android 的设备都支持可用于保存文件的共享“外部存储”。 该存储可能是可移除的存储介质(例如 SD 卡)或内部(不可移除)存储。 保存到外部存储的文件是全局可读取文件,而且,在计算机上启用 USB 大容量存储以传输文件后,可由用户修改这些文件。
- 获取外部存储路径及状态
Environment.getExternalStorageState()
Environment.getExternalStorageDirectory()
- 公共目录
Android在外部存储上提供了十个公共目录来存储对应的文件,通过api:Environment.getExternalStoragePublicDirectory(type)来访问
名称 | 地址 |
---|---|
DIRECTORY_MUSIC | /storage/emulated/0/Music |
DIRECTORY_PODCASTS | /storage/emulated/0/Podcasts |
DIRECTORY_RINGTONES | /storage/emulated/0/Ringtones |
DIRECTORY_ALARMS | /storage/emulated/0/Alarms |
DIRECTORY_NOTIFICATIONS | /storage/emulated/0/Notifications |
DIRECTORY_PICTURES | /storage/emulated/0/Pictures |
DIRECTORY_MOVIES | /storage/emulated/0/Movies |
DIRECTORY_DOWNLOADS | /storage/emulated/0/Downloads |
DIRECTORY_DCIM | /storage/emulated/0/Dcim |
DIRECTORY_DOCUMENTS | /storage/emulated/0/Documents |
3. 私有目录
Android2.2 引入了基于扩展存储器的应用缓存目录,该目录指向大容量的扩展存储器。==与应用的内存私有目录一样,缓存目录会随着应用的卸载一并删除。==
==和内部存储一样,会在 SD 卡的 Android/data ++目录下生成对应包名的文件夹++==
地址 | api |
---|---|
/storage/emulated/0/Android/data/应用包名/files | context.getExternalFilesDir(type) |
/storage/emulated/0/Android/data/应用包名/cache | context.getExternalCacheDir() |
/storage/emulated/0/Android/obb/应用包名 | context.getObbDir() |
Android其它目录
/system/app 和 /data/app 的区别
- /data/app 里软件权限没全开,/system/app 里的软件获取了所有权限
- /data/app 可以应用卸载,/system/app 只能 root 后删除
- /data/app 文件夹大小随便,/system/app 文件夹有大小限制
- 卸载/system/app 目录下的文件并不会增加系统空间,即可用 ROM 空间