前言
对于任何一个应用来说存储肯定是必不可少的,对于很多做Android开发的同学来说可能认为文件存储很简单,但是他们未必就搞懂了他的数据到底存在了哪里,以及他的数据是否存对了地方,下面我将介绍安卓文件存储:
一、认识手机系统文件目录
先丢一个Nexus 5 手机的File Explorer获取的系统目录结构图
image- acct 系统回收站,删除的系统文件。
- cache 缓存
- config 配置
- d
- data 用户的所有程序相关数据
- app/ 所有用户安装的apk文件
- data/
- local
- dev 设备文件,Linux系统常规文件夹,里面的文件很多都是设备模拟的文件系统
- etc 系统主要配置文件
- firmware 固件
- met 挂载点
- oem oem
- proc 运行时文件
- res
- root 超级用户的配置文件
- sbin 系统工具,比如 ps/cp/pm 等
- scared sd卡
- storage 手机存储设备
- sys Linux 内核文件
- system Android 系统文件
- app
- bin
- etc
- fonts
- framework
- lib
- ....
- vendor 供应商文件
二、常用目录介绍
根据上面的介绍这样多目录,抛开系统文件,其中/system和/data、storage/是开发者非常关心的三个目录。
- /system
- /system/app:存放系统软件
- /data
- data/app:存放用户安装的软件
- data/data:存放用户软件的数据
- /storage
- storage/emulated/0:存储卡
- mnt/sdcard:虚拟路径,快捷方式,实际也指向存储卡
- sdcard:虚拟路径,快捷方式,实际也指向存储卡
三、内存,内部存储,外部存储,概念的区分
在安卓中把文件存储分为了内部存储(Internal storage)和外部存储(External storage),然后我们总把内存、内部存储、外部存储傻傻分不清楚,把外部存储私有目录认为是内部存储等等。下面我们就来认识下内部存储和外部存储和他们的区别吧!
1.概念介绍
- 内存(Memory):也称为运行内存是一种临时的数据存储器,特点是当断电后数据就会消失,并且读取和写入的速度非常快。
- 内部存储(Internal Storage):机身存储的私有文件,存储路径在/data/data下。相当于Linux系统的用户私有文件,除了当前用户其他用户都没有访问权限。
- 外部存储(External Storage):机身存储公有文件和外置的存储(SDCard),所有APP共享,存储路径在/mnt 或者 /storage下。
2.区分内部存储和外部存储
image先放上我的手机的关于手机信息介绍,系统版本8.0 运行内存4GB 手机存储64GB, 这里所谓的运行内存就是内存 而手机存储是内部存储和外部存储共用大小。我的手机是8.0系统已经把内部存储和外部存储集成在一起,所以内部存储和外部存储共用64G。
用一张图来帮助理解
image
注: 在原先的时候内部存储和外部存储是分开的,这种很好理解也很好区分(这种情况多发生Android4.4 及以前),但是随着Android手机的发展,渐渐的都做成了一体机甚至将内部存储和外部存储都集成在了一起,只是在逻辑上区分了内部存储和外部存储。甚至到了现在很多厂商连外置SD卡的卡槽都不提供了,现在手机电池也是不可拆卸。
3.内部存储和外部存储区别和特点
内部存储:总是可用的,文件默认只能被你的应用访问到,应用卸载之后,内部存储中的这些文件也被删除。相当与Linux的个人目录,只能当前用户才能看到
存储路径:data/data/[package name]/XXX
外部存储:并不总是可用的,所有应用共享,文件能被所有应用访问到,外部存储又分为公有目录和私有目录
- public:公有目录 文件能被其他应用访问到,APP卸载后文件还会存在
存储路径:/storage/emulated/0/XXX - private: 私有目录,文件能被所有应用访问到,APP卸载后文件会被删除
存储路径:/storage/emulated/0/Android/data/XXX
1.内存存储路径
- /data/data/[package name]/app_ 自定义文件
- /data/data/[package name]/cache 缓存
- /data/data/[package name]/code_cache 代码缓存
- /data/data/[package name]/database 数据库
- /data/data/[package name]/files 文件
- /data/data/[package name]/no_backup 不会自动备份到远程存储的应用程序文件
- /data/data/[package name]/shared_prefs SharedPreferences文件
2.外部存存储路径
- 外部存储公共目录
- /storage/emulated/0/Music
- /storage/emulated/0/Podcasts
- /storage/emulated/0/Ringtones
- /storage/emulated/0/Alarms
- /storage/emulated/0/Notifications
- /storage/emulated/0/Pictures
- /storage/emulated/0/Movies
- /storage/emulated/0/Downloads
- /storage/emulated/0/Dcim
- /storage/emulated/0/Documents
- 外部存储公共私有目录
- /storage/emulated/0/Android/data/[package name]/files
- /storage/emulated/0/Android/data/[package name]/cache
- /storage/emulated/0/Android/obb/[package name]
由于本人水平有限,如果有错误和需要改进的地方,还希望大家多多指教,共同进步。
网友评论