一、内存、内部存储、外部存储
概述
4.4以下,机身存储就是内部存储,外部存储就是SD卡。我们通过getDataDirectory就可以获取内部存储根路径,通过getExternalStorageDirectory就可以获取外置SD卡根路径。
4.4以上,机身存储包含内部存储和内置的外部存储,外部存储包含两部分内置的外部存储和SD卡,其中通过getExternalStorageDirectory获取的是内置的外部存储,而外置SD卡我们则需要通过getExternalDirs遍历来获取了。
再看一张图
内存_内部存储_外部存储.png
区别
内存
内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,所以说它是用于计算机运行时的,它不是用来存储数据的。
内部存储
存储于内部存储中的文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在该应用包名的目录下。当一个应用卸载之后,内部存储中的这些文件也被删除。内部存储空间十分有限,它也是系统应用存储数据的地方,一旦内部存储使用完,手机也就卡的不行了,所以对于内部存储,尽量避免占用。SharedPreferences和SQLite数据库都是存储在内部存储空间上的。内部存储一般用Context来获取和操作。
对于应用的自身文件允许外部访问,则将文件设置为可读,通过应用的包名可以访问到。要是不允许外部访问,则需要把文件设置为私有的,其他应用即使知道包名也无法访问。
内部存储路径.png
外部存储
4.4以下外部存储就是指外置的SD卡。
4.4以上外部存储则包括内置的外部存储和外置的SD卡。
4.4以上的系统中,API提供了这样一个方法来遍历手机的外部存储路径。如果有插入SD卡会打印两个条数据。否则只有第一条。
// 遍历外部存储路径
if (Build.VERSION.S