Android文件存储1.0 | 8月更文挑战

1.前言

这是我参加8月更文挑战的第一天。我在刚刚接触Android手机时就感受到了Android文件系统的混乱,文件系统里充斥着各种我看不懂的文件夹。后来经过深入的学习才知道这是由于一些Android开发者不规范的存储方式导致的,本文将介绍一些自己对于Android文件存储系统的学习。

2.存储系统的划分

在早期的Android手机中,由于自身存储空间有限,用户一般会加一张SD卡来扩展存储空间。在这个时期手机自身的存储空间叫做内部存储空间,外接的SD卡叫做外部存储空间

对于现在的Android手机来说,动辄上百G的存储空间让插入SD卡变得没什么必要了,所以手机内部的存储空间被划分为内部存储空间外部存储空间

2.1.内部存储介绍

2.1.1.存储位置

每个APP都有自己私有的内部存储空间,它们都存放在 /data/data/包名 文件夹下,我们可以通过Android Studio自带的Device File Explore来查看Android设备的存储空间。Device File Explore的按钮一般在Android Studio的右侧。

image-20210804145352696

如果发现找不到这个按钮,也可以通过上方菜单按钮View->tool window->Device File Explore来打开。

image-20210804145549712

之后就能看见Android的内部存储空间全貌,每个APP的私有内部存储空间只有自己可以访问,在APP删除的时候,这里面的文件夹也会一起删除。

2.1.2.存储内容和访问方式

我们打开一个文件夹来查看其中的内容。每个APP都会有这三个文件夹,cache文件夹是用来存放APP缓存,在Kotlin中可以通过cacheDir这个API来访问。code_cache文件夹是用来存放代码缓存的,一般我们用不着,通过codeCacheDir来访问。databases文件夹用于存放数据库文件,不需要我们主动去访问,在创建了数据库之后Android就会把数据库文件放在这个文件夹里面。file是文件夹用于存放一般文件,通过filesDir来访问。还有shared_prefs存放SP文件,以及lib存放APP依赖的so库。

image-20210804145828031

2.2.外部存储空间

2.2.1.存储位置

外部存储空间的位置是在 /storage/emulated/0里面,除了这个文件夹,Android还有两个软链接指向外部存储空间,分别是 /sdcard//storage/self/primary

image-20210804154956921

2.2.2.存储内容和访问方式

在外部存储空间中不仅有APP私有存储空间还有公共存储空间,像DCIMPicture就是公共图像文件存放空间,Movie就是视频文件存放空间。

/sdcard/Android/data是APP的外部存储私有目录,可以使用getExternalFilesDir这个API来访问。

3.相同点和不同点的比较

不同点:

外部存储一般存放容量比较小,私密性比较强的文件。外部存储一般存放比较大的文件。

相同点:

APP访问自身的私有目录不需要权限,只有读写公共存储区域时才要申请读写权限。

参考资料

1.Android 存储基础—小鱼人爱编程

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享