我们一般都会缓存一些数据在手机上,所以来说明一些有关的Android存储的内容。
内部存储internal storage
首先一定先明白一个概念,内存存储 != 内存,完全是两回事。一般当作是PC的C盘,如果使用RE管理器你可以看到这个目录下的内容。比如在/data/data你就可以看到你的应用程序包名,因为Shared Preferences和SQLite数据库都是存储在这个包名下的,通过RE管理器你还可以查看建立的数据库的内容。
内部存储一般用Context来获取和操作。因为内部存储一般手机厂商划分固定,最好不要存储太多。
一般都会在设置中的应用程序见到清除缓存和清除数据,这两个指的就是
Context.getCacheDir();
Context.getFilesDir();
第一个得到的目录为:/data/data/包名/cache,机身内存不足时,文件夹下的文件会被删除
第二个得到的目录为:/data/data/包名/files
我在网上发现比较详细的总结,感谢https://www.liaohuqiu.net/cn/posts/storage-in-android/
![](https://img.haomeiwen.com/i3974568/58d641eba4b37740.png)
外部存储external storage
这个存储现在一般为手机自带的存储,以前指的是SD卡。
这个可以当做是PC的除C盘以外的空间,这个一般是缓存图片等等一些存放的位置,比较流氓(BAT)的一般在目录下直接放一个文件夹,这样子就会造成卸载APP的时候,这些文件都不会被删除,所以谷歌一般建议还是在你的应用程序包名下。
- 外部存储根目录(就是文件管理器一般打开的位置)
Environment.getExternalStorageDirectory();
- 包名下的缓存(目录为
/storage/emulated/0/Android/data/包名/cache,前面因为手机型号不同,不一样)
Context.getExternalCacheDir()
- 包名下的数据(这个文件夹中的媒体文件,不会被当做媒体扫描出来,加到媒体库中。)
(目录为/storage/emulated/0/Android/data/包名/files)
Context.getExternalFilesDir("")
参数还可以系统提供的,如Environment.DIRECTORY_PICTURES
目录为/storage/emulated/0/Android/data/包名/files/Pictures
详细的为
![](https://img.haomeiwen.com/i3974568/d57fe3f83fd2e2be.png)
网友评论