Android文件目录

1,503 阅读3分钟

应用内部储存目录

特点

  1. 读写不需要storage存储权限,不可被外部app访问。

  2. 卸载后文件夹删除

主要目录

getDataDir()

当前app在设备内部存储上的根目录,获取到的是一个内部存储上的文件夹

路径为:/data/user/0/当前app包名 例:/data/user/0/com.gaodun.utils.download.sample image.png

打开【Android Studio】-【Device File Explorer】-【data】-【data】 - 【当前app包名查看】

/data/data/packapgename/

image.png

cache目录

存放app的缓存信息,通过ContextWrapper.getCacheDir()获取

/data/user/0/packapgename/cache 即: /data/data/packagename/cache

image.png

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

image.png

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

image.png

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

image.png

外部存储目录

分为两种:公共外部存储目录和应用私有外部存储目录

公共外部存储目录

特点

需要声明和申请外部存储读写权限

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/

image.png

  • 通过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 image.png

应用私有外部存储目录

特点

  1. 不需要申请外部存储权限
  2. 卸载应用后该目录删除
  3. 可被其他应用访问到

两个外部私有存储路径

  • 应用外部私有缓存cache目录:ContextWrapper.getExternalCacheDir()

获取到:/storage/emulated/0/Android/data/packagname/cache 例: /storage/emulated/0/Android/data/com.gaodun.utils.download.sample/cache

image.png

  • 应用外部私有文件files目录:ContextWrapper.getExternalFilesDir("")

获取到:/storage/emulated/0/Android/data/packagename/files 例: /storage/emulated/0/Android/data/com.gaodun.utils.download.sample/files

image.png

总结

目录路径Api是否需要申请存储权限外部app能否访问示例
内部存储根目录/data/user/0/packapgename/Context.getDataDir()/data/user/0/com.gaodun.utils.download.sample
files目录/data/user/0/packagename/filesContext.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_cacheContext.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/filesContext.getExternalFilesDir()申请存储权限后可访问/storage/emulated/0/Android/data/com.gaodun.utils.download.sample/files
应用私有cache目录/storage/emulated/0/Android/data/packagename/cacheContext.getExternalCacheDir()申请存储权限后可访问/storage/emulated/0/Android/data/com.gaodun.utils.download.sample/cache