Android 内部存储和外部存储
2018-06-22 本文已影响0人
feifei_fly
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/目录,一般存放临时缓存数据。