Android 内部存储和外部存储

Android 存储可如下划分:

  • 内部RAM
  • 内部存储:内部ROM
  • 外部存储:外部ROM和Sdcard

内部存储

内部存储位于系统中很特殊的一个位置,如果你想将文件存储于内部存储,那么文件默认只能被你的应用访问到,且一个应用创建的所有文件都在和应用包名相同的目录下。当一个应用卸载之后,内部存储中的这些文件也被删除

内部存储中的两个重要目录:
(1)data/app文件夹。app文件夹里存放着我们所有安装的app的apk文件夹
(2)data/data文件夹,这个文件夹下都是一个包名.

  • data/data/包名/shared_prefs
  • data/data/包名/database
  • data/data/包名/files
  • data/data/包名/cache
    我们在使用SharePerference的时候,将数据持久化存储于本地,其实就是存在这个shared_prefs中的xml文件里,我们的app里边的数据库文件就存储于databases文件夹中,我们的普通数据存储在files中,缓存在cache文件夹中。

外部存储

外部存储就是我们上面看到的storage文件夹,也有可能是mnt文件夹。在storage文件夹中有一个sdcard文件夹。
sdcard这个文件夹中的文件又分为两类,一类是公有目录,还有一类是私有目录。

(1)公有目录有9大类,比如DCIM,Download等这些系统为我们创建的文件夹。

(2)私有目录就是android这个文件夹,这个文件夹打开后里边有一个data文件夹,打开这个文件夹,里面包含了许多包名组成的文件夹。

/sdcard/Android/data/包名/files
/sdcard/Android/data/包名/caches

Google官方建议我们App的数据应该存储在外部存储的私有目录中该App的包名下,这样当用户卸载掉App之后,相关的数据会一并删除

常用目录操作

  • context.getFilesDir() 内部存储data/data/包名/files目录
  • context.getCacheDir() 内部存储data/data/包名/cache目录
  • Environment.getExternalStorageDirectory() 外部存储根目录
  • Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DCIM) 外部存储公有目录
  • context.getExternalFilesDir() 外部存储私有目录storage/sdcard/Android/data/包名/files
  • context.getExternalCacheDir() 外部存储私有目录storage/sdcard/Android/data/包名/cache

通过Context.getExternalFilesDir()方法可以获取到SDCard/Android/data/你的应用的包名/files/目录,一般放一些长时间保存的数据。

通过Context.getExternalCacheDir()方法可以获取到SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据。

参考链接:
https://www.jianshu.com/p/31670805f32a

你可能感兴趣的:(Android 内部存储和外部存储)