Android中内部存储,外部存储的概念
1.内部存储不是内存,而是位于系统中的一个特殊位置。将文件存储到内部存储中,文件默认只能被应用访问到,一个应用创建的所有文件都在和应用包名相同的目录下,应用卸载后文件也会删除。内部储存的容量相当有限,是系统本身和系统应用程序主要的数据存储所在地。
Shared Preferences和SQLite数据库都是存储在内部存储空间上的。
2.外部存储
(Android4.4以后)手机比如16+256这些概念中的256(容量概念),既机身自带的容量在概念上分成了”内部存储internal” 和”外部存储external” 两部分。

/data/user/0/packname/files 内部存储
/storage/emulated/0/Android/data/packname/files 外部存储
这两个的区别是一个在内部存储里面,一个在外部存储里面。它们的共同点,就是它们的路径都带有包名,表明是这个APP的专属文件,一般在有外部存储的时候都去使用外部存储。
清除数据和清除缓存

清除数据:
/data/user/0/packname/
/storage/emulated/0/Android/data/packname/
清除应用包下的所有生成的文件

清除缓存:
清除内存中关于程序运行期间用到数据(输入输出计算等)。

访问内部存储的API方法:

1、Environment.getDataDirectory()
2、getFilesDir().getAbsolutePath()
3、getCacheDir().getAbsolutePath()
4、getDir(“myFile”, MODE_PRIVATE).getAbsolutePath()

访问外部存储的API方法:
1、Environment.getExternalStorageDirectory().getAbsolutePath()
2、Environment.getExternalStoragePublicDirectory(“”).getAbsolutePath()
3、getExternalFilesDir(“”).getAbsolutePath()
4、getExternalCacheDir().getAbsolutePath()

1、Environment.getDataDirectory() = /data
这个方法是获取内部存储的根路径
2、getFilesDir().getAbsolutePath() = /data/user/0/packname/files
这个方法是获取某个应用在内部存储中的files路径
3、getCacheDir().getAbsolutePath() = /data/user/0/packname/cache
这个方法是获取某个应用在内部存储中的cache路径
4、getDir(“myFile”, MODE_PRIVATE).getAbsolutePath() = /data/user/0/packname/app_myFile
这个方法是获取某个应用在内部存储中的自定义路径
方法2,3,4的路径中都带有包名,说明他们是属于某个应用
5、Environment.getExternalStorageDirectory().getAbsolutePath() = /storage/emulated/0
这个方法是获取外部存储的根路径
6、Environment.getExternalStoragePublicDirectory(“”).getAbsolutePath() = /storage/emulated/0
这个方法是获取外部存储的根路径
7、getExternalFilesDir(“”).getAbsolutePath() = /storage/emulated/0/Android/data/packname/files
这个方法是获取某个应用在外部存储中的files路径
8、getExternalCacheDir().getAbsolutePath() = /storage/emulated/0/Android/data/packname/cache
这个方法是获取某个应用在外部存储中的cache路径