前言
有项目开发中,关于存储文件时,要使用设备存储目录,傻瓜式写法直接写固定目录例如“sdcard/Android/0/data”,这么写可以,但是不建议这么写,如果设备的系统是定制的,可能会遇到兼容性问题。
常用文件夹
系统已经提供了API提供常用的文件夹,API可分为两类Context和Environment。
第一类 Context
这里一类要通过上下文Context,代码如下
// Context.getExternalCacheDir()
System.out.println("Context.getExternalCacheDir() = " + appContext.getExternalCacheDir());
// Context.getExternalFilesDir(type)
System.out.println("Context.getExternalFilesDir(type) = " + appContext.getExternalFilesDir(null));
// Context.getFilesDir()
System.out.println("Context.getFilesDir() = " + appContext.getFilesDir().getPath());
// Context.getNoBackupFilesDir()
System.out.println("Context.getNoBackupFilesDir() = " + appContext.getNoBackupFilesDir().getPath());
输出结果
Context.getExternalCacheDir() = /storage/emulated/0/Android/data/com.pax.demo/cache
Context.getExternalFilesDir(type) = /storage/emulated/0/Android/data/com.pax.demo/files
Context.getFilesDir() = /data/data/com.pax.demo/files
Context.getNoBackupFilesDir() = /data/data/com.pax.demo/no_backup
结果统计,com.jqchen.demo是应用包名。
方法 | 路径 |
---|---|
getExternalCacheDir() | /storage/emulated/0/Android/data/com.jqchen.demo/cache 或者 /sdcard/Android/data/com.jqchen/cache |
getExternalFilesDir(type) | /storage/emulated/0/Android/data/com.jqchen.demo/files 或者 /sdcard/Android/data/com.jqchen.demo/files |
getFilesDir() | /data/data/com.jqchen.demo/files |
getNoBackupFilesDir() | /data/data/com.pax.demo/no_backup |
第二类 Environment
这一类API通过Environment访问。
代码如下
// Environment.getExternalStorageDirectory()
System.out.println("Environment.getExternalStorageDirectory() = " + Environment.getExternalStorageDirectory().getPath());
// Environment.getDownloadCacheDirectory()
System.out.println("Environment.getDownloadCacheDirectory() = " + Environment.getDownloadCacheDirectory().getPath());
// Environment.getDataDirectory()
System.out.println("Environment.getDataDirectory() = " + Environment.getDataDirectory().getPath());
输出结果
Environment.getExternalStorageDirectory() = /storage/emulated/0
Environment.getDownloadCacheDirectory() = /cache
Environment.getDataDirectory() = /data
结果统计
方法 | 路径 |
---|---|
getExternalStorageDirectory() | /storage/emulated/0 或者 /sdcard |
getDownloadCacheDirectory() | /cache |
getDataDirectory() | /data |
喜欢的可以点赞,有问题欢迎评论,谢谢!