内部存储:
如果想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。应用创建于内部储存的文件,与这个应用是关联起来的。当一个应用卸载之后,内部存储中的这些文件也被删除。从技术上来讲如果你在创建内部存储文件的时候将文件属性设置成可读,其他app能够访问自己应用的数据,前提是他知道你这个应用的包名,如果一个文件的属性是私有(private),那么即使知道包名其他应用也无法访问。 内部存储空间十分有限,因而显得可贵,另外,它也是系统本身和系统应用程序主要的数据存储所在地,一旦内部存储空间耗尽,手机也就无法使用了。所以对于内部存储空间,我们要尽量避免使用。Shared Preferences和SQLite数据库都是存储在内部存储空间上的。内部存储一般用Context来获取和操作。
访问内部存储的API方法:
1. Environment.getDataDirectory
2. getFilesDir().getAbsolutePath()
3. getCacheDir().getAbsolutePath()
4. getDir(“myFile”, MODE_PRIVATE).getAbsolutePath()
外部储存
在4.4(API19)以前的手机上,内置存储(机身储存)为内部储存,扩展的SD卡为外部储存。
在4.4系统及以上的手机将机身储存(手机自身带的存储叫做机身储存,其出厂已经有了)在概念上分成了”内部存储internal”和”外部储存external”两部分。同时SD卡也是外部储存。访问外部存储的API方法:
1.Environment.getExternalStorageDirectory().getAbsolutePath()
2.Environment.getExternalStoragePublicDirectory(“”).getAbsolutePath()
3.getExternalFilesDir(“”).getAbsolutePath()
4.getExternalCacheDir().getAbsolutePath()
综上:
4.4以前,内置存储就是内部存储,外置SD卡就是外置存储。我们通过getDataDirectory就可以获取内置存储根路径,通过getExternalStorageDirectory就可以获取外置SD卡根路径。4.4以后外部存储就包含两部分了,其中通过getExternalStorageDirectory获取的是机身存储的外部存储,而外置SD卡我们则需要通过getExternalDirs遍历来获取了。