Android 内部存储与外部存储

2022-08-26  本文已影响0人  小阿飞的小蝴蝶

存储空间划分

  1. 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以后访问外部存储私有目录不需要读写权限。

总结

  1. 应⽤使⽤内部存储不需要权限,内部存储属于应⽤的私有存储区域,其他应⽤不可访问,但应⽤卸载,内部存储中对应的⽂件也会删除。
  2. 外部存储分为公共⽬录和私有⽬录,外部存储是可以全局访问的,但需要申请读写权限。Android4.4以后私有⽬录不需要申请读写权限。
  3. 如果缓存的数据量较⼤,请不要保存到内部存储中。
  4. 如果想保存可共享给其他应⽤的数据,请保存到外部存储的公共⽬录中。
  5. clear data 和 clear cache 两个都是应⽤的缓存数据,清理的是外部存储中的私有⽬录下的files/cache,即
    /storage/emulated/0/Android/data/packagename/cache
上一篇下一篇

猜你喜欢

热点阅读