应用内部储存目录
特点
-
读写不需要storage存储权限,不可被外部app访问。
-
卸载后文件夹删除
主要目录
getDataDir()
当前app在设备内部存储上的根目录,获取到的是一个内部存储上的文件夹
路径为:/data/user/0/当前app包名 例:/data/user/0/com.gaodun.utils.download.sample
打开【Android Studio】-【Device File Explorer】-【data】-【data】 - 【当前app包名查看】
/data/data/packapgename/
cache目录
存放app的缓存信息,通过ContextWrapper.getCacheDir()获取
/data/user/0/packapgename/cache 即: /data/data/packagename/cache
code_cache目录
存放app运行时编译或者优化的代码,通过ContextWrapper.getCodeCacheDir()获取
/data/user/0/packagename/code_cache 即:/data/data/packagename/code_cache 例:/data/user/0/com.gaodun.utils.download.sample/code_cache
lib目录
不能通过ContextWrapper获取
/data/user/0/packagename/lib 即:/data/data/packagename/lib 例:/data/user/0/com.gaodun.utils.download.sample/lib
files目录
存放app的文件信息,也可在此目录创建一些文件夹,存放需要的文件,通过ContextWrapper.getFilesDir()获取
/data/user/0/packagename/files 即:/data/data/packagename/files 例:/data/user/0/com.gaodun.utils.download.sample/files
shared_prefs目录
存储sharedPref数据,通过getSharedPreferences(name,mode)获取
/data/user/0/packagename/shared_prefs 即:/data/data/packagename/shared_prefs 例如:getSharedPreferences("shared_prefs_doraemon",Context.MODE_PRIVATE)获取到sp文件, /data/user/0/com.gaodun.utils.download.sample/shared_prefs/shared_prefs_doraemon.xml
外部存储目录
分为两种:公共外部存储目录和应用私有外部存储目录
公共外部存储目录
特点
需要声明和申请外部存储读写权限
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.READ_EXTERNAL_STORAGE
三种方法获取外部存储目录
- 获取外部存储根目录:Context.getExternalFilesDir(String type)
即 /storage/emulated/0,即:/sdcard/
// type类型:
> Environment.DIRECTORY_MUSIC,
> Environment.DIRECTORY_PODCASTS,
> Environment.DIRECTORY_RINGTONES,
> Environment.DIRECTORY_ALARMS,
> Environment.DIRECTORY_NOTIFICATIONS,
> Environment.DIRECTORY_PICTURES,
> Environment.DIRECTORY_MOVIES
- 获取外部存储根目录:Environment.getExternalStorageDirectory()
外部存储根目录路径:/storage/emulated/0,即:/sdcard/
- 通过type获取外部存储对应文件夹:Environment.getExternalStoragePublicDirectory(type)
//type种类:
DIRECTORY_MUSIC:音乐,
DIRECTORY_RINGTONES:铃声,
DIRECTORY_PICTURES:图片,
DIRECTORY_DCIM:照片和视频,
DIRECTORY_DOWNLOADS:下载目录,
DIRECTORY_DOCUMENTS:文档,等等...
例如:获取外部存储中的下载文件夹
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
获取到该文件夹下所有文件和目录:/storage/emulated/0/Download
应用私有外部存储目录
特点
- 不需要申请外部存储权限
- 卸载应用后该目录删除
- 可被其他应用访问到
两个外部私有存储路径
- 应用外部私有缓存cache目录:ContextWrapper.getExternalCacheDir()
获取到:/storage/emulated/0/Android/data/packagname/cache 例: /storage/emulated/0/Android/data/com.gaodun.utils.download.sample/cache
- 应用外部私有文件files目录:ContextWrapper.getExternalFilesDir("")
获取到:/storage/emulated/0/Android/data/packagename/files 例: /storage/emulated/0/Android/data/com.gaodun.utils.download.sample/files
总结
| 目录 | 路径 | Api | 是否需要申请存储权限 | 外部app能否访问 | 示例 | |
|---|---|---|---|---|---|---|
| 内部存储 | 根目录 | /data/user/0/packapgename/ | Context.getDataDir() | 否 | 否 | /data/user/0/com.gaodun.utils.download.sample |
| files目录 | /data/user/0/packagename/files | Context.getFilesDir() | 否 | 否 | /data/user/0/com.gaodun.utils.download.sample/files | |
| caches目录 | /data/data/packapgename/ | Context.getCacheDir() | 否 | 否 | /data/user/0/com.gaodun.utils.download.sample/code_cache | |
| code_cache目录 | /data/user/0/packagename/code_cache | Context.getCodeCacheDir() | 否 | 否 | /data/user/0/com.gaodun.utils.download.sample/code_cache | |
| lib目录 | /data/user/0/packagename/lib | - | 否 | 否 | /data/user/0/com.gaodun.utils.download.sample/lib | |
| shared_prefs目录 | /data/user/0/packagename/shared_prefs | - | 否 | 否 | /data/user/0/com.gaodun.utils.download.sample/shared_prefs/shared_prefs_doraemon.xml | |
| 外部存储 | 根目录 | /storage/emulated/0/ | Environment.getExternalStorageDirectory() | 是 | 是 | /storage/emulated/0/ |
| 下载文档等目录 | /storage/emulated/0/对应type文件夹 | Environment.getExternalStoragePublicDirectory(type) | 是 | 是 | /storage/emulated/0/Downloads | |
| 应用私有files目录 | /storage/emulated/0/Android/data/packagename/files | Context.getExternalFilesDir() | 否 | 申请存储权限后可访问 | /storage/emulated/0/Android/data/com.gaodun.utils.download.sample/files | |
| 应用私有cache目录 | /storage/emulated/0/Android/data/packagename/cache | Context.getExternalCacheDir() | 否 | 申请存储权限后可访问 | /storage/emulated/0/Android/data/com.gaodun.utils.download.sample/cache |