数据存储

Android数据存储构建在Linux基础上,利用Linux账号系统来限定应用的访问。

Android的文件系统

Android存储设备有只读存储器ROM和拓展存储器SD卡组成。只读存储器ROM是系统自带,用于存储整个Android系统的核心程序和数据、第三方应用,类似PC硬盘。拓展存储器常见是SD卡。在存储设备上运行Android文件系统,实质上是Linux文件系统。只读存储器ROM运行的是yaffs2文件系统,挂载在Android文件系统上;拓展存储器运行的是FAT32,对应着sdcard/目录。

 

目录结构

使用SDK工具adb浏览Android目录结构。命令:

Adb shell ls –l

Adb shell切换到shell模式。

System:系统目录。放在Android运行所需的核心库

Data:应用目录。存放运行在Android之上的应用及其数据

Sdcard:用于存放共享数据

Mnt:Android挂载的外部存储信息

 

应用数据存储

第三方应用及其数据放于data目录。应用安装包放于data/app/目录,安装包文件名形如X.APK。应用的安装就是将应用原封不动放入data/app/目录,.APK文件本质是ZIP压缩文件,这种安装,最大程度节省宝贵的只读空间。

    节省空间的代价是每次运行应用都要将存储在安装包中的资源文件、数据文件动态解压,从而起到时间变长。为了提升启动效率,Android将解析出来的代码文件(Dex格式)解析提取出来,缓存在dalvik-cache目录。

    在data 还保存运行中动态产生的数据,主要有:应用的配置文件、数据库文件、备份文件、每个应用都会在/data/data目录下创建一个同安装包同名的应用数据目录,用来存放运行数据。

    Linux为每个应用创建一个账号,只有通过本账号才有权限去运行改应用的安装包文件,读写应用目录的数据。如此实现数据的隐私化。

 

Android文件操作

数据文件分2类:放在sdcard目录下的,可以被各个应该共享;放在该应用数据目录下的,仅供本应用使用。

    在拓展存储器中的文件,通过Java.io 进行操作。获得拓展存储器的目录:File dre = Environment.getExternalStorageDirectory

Environment用于描述拓展存储器的目录信息。

基于拓展存储器的缓存目录获取:Context.getExternalCacheDir

Environment还可以用于判断拓展存储器的状态。

 

 

应用目录下的私有文件通过封装的类和函数进行,如Context.OpenFileOutput