Android 文件存储路径区分
前言
查了很多资料,最终归结为如下内容
1.资料参考
Android文件各种存储路径的比较
彻底了解android中的内部存储与外部存储
参考
彻底搞懂Android文件存储---内部存储,外部存储以及各种存储路径解惑
Android外部存储/内部存储路径获取大全
2.概念的认识
内部存储:
内部存储不同于内存,与应用有关联的文件数据存储在其中,而且它也是系统本身和系统应用程序主要的数据存储所在地。SharedPreferences和SQLite数据库都是存储在内部存储空间上的。内部存储空间有限,尽量不存在此处。
外部存储:
外部存储分为手机
在4.4(API19)以前的手机上,手机自身带的存储卡就是内部存储,而扩展的SD卡就是外部存储;
在4.4系统及以上的手机将机身存储存储(手机自身带的存储叫做机身存储)在概念上分成了”内部存储internal” 和”外部存储external” 两部分,假如插入了sd卡,sd卡也属于外部存储。
eg:
如果你的手机插了SD卡的话,那么它打印的路径就有两条了,例如我的华为荣耀7插了SD卡,它的结果如下:
/storage/emulated/0/Android/data/packname/files/mounted
/storage/B3E4-1711/Android/data/packname/files/mounted
其中/storage/emulated/0目录就是机身存储的外部存储路径
而/storage/B3E4-1711/就是SD卡的路径
他们统称为外部存储
3.Api路径方法总结
内部存储:
- /data/data/包名/
context.getFilesDir(); // /data/data/包名/files
context.getCacheDir(); // /data/data/包名/cache
外部存储:
- /sdcard/Android/data/包名/
context.getExternalFilesDir(); /sdcard/Android/data/包名/files
context.getExternalCacheDir(); /sdcard/Android/data/包名/cache
- /sdcard/xxx
/storage/emulated/0
Environment.getExternalStorageDirectory();
/storage/emulated/0/DCIM, 另外还有MOVIE/MUSIC等很多种标准路径
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
getExternalStorageDirectory()在不同android机子上的路径信息
系统版本 | 结果 |
---|---|
4.0 | /mnt/sdcard |
4.1 | /storage/sdcard0 |
4.2 | /storage/sdcard0 |
4.4 | /storage/emulated/0 |
6.0 | /storage/emulated/0 |
1、其中sdcard/、mnt/sdcard、storage/sdcard0、storage/emulated/0、storage/emulated/legacy都是同一个路径的不同”指针“,指向的是同一个地方,只是不同Android版本的叫法不一样。