Android 文件目录和权限
1、内部存储
内部存储:手机内部存储的根目录
对应路径:Environment.getDataDirectory().getParentFile()
| 方法 | 路径 |
|---|---|
| Environment.getDataDirectory() | /data |
| Environment.getDownloadCacheDirectory() | /cache |
| Environment.getRootDirectory() | /system |
2、外部存储
外部存储:分为 SD 卡和扩展卡内存
SD 卡路径获取方法:Environment.getExternalStorageDirectory() /storage/sdcard0
SD 卡的九大公有路径如下:
| 方法 | 路径 |
|---|---|
| Environment.getExternalStoragePublicDirectory(DIRECTORY_ALARMS) | /storage/sdcard0/Alarms |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM) | /storage/sdcard0/DCIM |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS) | /storage/sdcard0/Download |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_MOVIES) | /storage/sdcard0/Movies |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC) | /storage/sdcard0/Music |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_NOTIFICATIONS) | /storage/sdcard0/Notifications |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES) | /storage/sdcard0/Pictures |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_PODCASTS) | /storage/sdcard0/Podcasts |
| Environment.getExternalStoragePublicDirectory(DIRECTORY_RINGTONES) | /storage/sdcard0/Ringtones |
注:Google官方建议我们数据应该存储在私有目录下,不建议存储在公有目录下或其他地方。
3、权限相关
| 方法 | 路径 | 权限 |
|---|---|---|
| Context.getFilesDir | /data/user/0/应用包名/files | 默认可读写 |
| Context.getCacheDir | /data/user/0/应用包名/cache | 默认可读写 |
| Context.CodeCacheDir | /data/user/0/应用包名/code_cache | 默认可读写 |
| Context.getDatabasePath | /data/user/0/应用包名/databases/参数名 | 默认可读写 |
| Context.getDir | /data/user/0/应用包名/app_参数名 | 默认可读写 |
| Context.getFileStreamPath | /data/data/应用包名/files/download | 默认可读写 |
| Context.getObbDir | /storage/emulated/0/Android/obb/应用包名 | 默认可读写 |
| Context.getExternalFilesDir | /storage/emulated/0/Android/data/应用包名/files/Download | 默认可读写 |
| Context.getExternalCacheDir | /storage/emulated/0/Android/data/应用包名/cache | 默认可读写 |
| Environment.getExternalStorageDirectory | /storage/emulated/0 | 6.0和以后需要申请权限 |
| Environment.getExternalStoragePublicDirectory | /storage/emulated/0/Download | 6.0和以后需要申请权限 |
| Environment.getDownloadCacheDirectory | /cache | 6.0和以后需要申请权限 |
| Context.getRootDirectory | /system | 不可以读写,需要 root 权限 |
<!--添加外部存储的读/写权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />