Android 内部存储与外部存储
2022-08-26 本文已影响0人
小阿飞的小蝴蝶
存储空间划分
- data/data/应用程序包名/属于内部存储
一般常用的内部存储路径有:
context.getFileDir().getAbsolutePath() -> data/data/packname/file/
context.getCacheDir().getAbsolutePath() -> data/data/packname/cache/
context.getDir(“myFile”, MODE_PRIVATE).getAbsolutePath()
-> /data/data/packname/myFile
Environment.getDataDirectory() -> /data
2./storage/emulated/0 外部存储
一般常用的外部存储路径有:
Environment.getExternalStorageDirectory().getAbsolutePath() = /storage/emulated/0
这个方法是获取外部存储的根路径
Environment.getExternalStoragePublicDirectory(“”).getAbsolutePath() = /storage/emulated/0
这个方法是获取外部存储的根路径
getExternalFilesDir(“”).getAbsolutePath() = /storage/emulated/0/Android/data/packname/files
这个方法是获取某个应用在外部存储中的files路径
getExternalCacheDir().getAbsolutePath() = /storage/emulated/0/Android/data/packname/cache
这个方法是获取某个应用在外部存储中的cache路径
什么是内部存储
内部存储中保存的数据在应用程序卸载后会被删除。内部存储一般在手机设置中的内存中会有展示 数据 缓存
数据中包含缓存数据指的是data/data/packagename/all
缓存指的是data/data/packagename/cache
什么是外部存储
外部存储分为两种
一、外部存储私有路径
getExternalCacheDir().getAbsolutePath()
getExternalFileDir().getAbsolutePath()
1. 属于应⽤私有,但是这些私有数据可以被其他应⽤访问和修改(通过私有⽬录的地址)
2. 应⽤卸载时,此⽬录及其内容将被删除。
3. 系统媒体扫描程序不会读取这些⽬录的⽂件,因此不能从MediaStore内容提供程序访问这些⽂件
二、外部存储共有目录
Environment.getExternalStorageDirectory().getAbsolutePath()
1.应⽤卸载时,此⽬录及其内容不会被删除。
2.需要读写权限
android4.4前后对存储有何划分
Android系统4.4之前外部存储私有目录访问需要读写权限,4.4以后访问外部存储私有目录不需要读写权限。
总结
- 应⽤使⽤内部存储不需要权限,内部存储属于应⽤的私有存储区域,其他应⽤不可访问,但应⽤卸载,内部存储中对应的⽂件也会删除。
- 外部存储分为公共⽬录和私有⽬录,外部存储是可以全局访问的,但需要申请读写权限。Android4.4以后私有⽬录不需要申请读写权限。
- 如果缓存的数据量较⼤,请不要保存到内部存储中。
- 如果想保存可共享给其他应⽤的数据,请保存到外部存储的公共⽬录中。
- clear data 和 clear cache 两个都是应⽤的缓存数据,清理的是外部存储中的私有⽬录下的files/cache,即
/storage/emulated/0/Android/data/packagename/cache