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版本的叫法不一样。

4.文件操作类(发现网上有很多,自行搜索吧)

Android文件操作工具类

你可能感兴趣的:(Android 文件存储路径区分)