前言
查了很多资料,最终归结为如下内容
1.资料参考
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版本的叫法不一样。
4.文件操作类(发现网上有很多,自行搜索吧)