android文件系统与数据存储

简介:

这篇主要来讲下android的文件系统以及数据存储的几种方式

Android的文件系统

我们知道,android是基于linux内核上开发的一套移动端操作系统,那么它自身的文件系统其实也是linux的文件系统,我们通过SDK提供adb工具使用命令查看下android系统的文件目录

1
adb shell ls -l

我们仍然可以看到一些linux熟悉的目录,像bin,dev,etc,mnt,root,sbin,sys,var等这些目录,这里我们发现好像少了一个重要的目录,即home目录,在linux中home目录用来存放不同用户的文件数据,各用户数据之间是不可访问的,那么在android中又是做了什么样的改变呢?
android会为每个应用创建一个linux账号,每个应用通过自己的账号去访问自己应用数据目录下的文件从而保证数据的私有化,android的第三方应用和数据都存放在data目录下,在data/data/目录下创建一个安装包的包名同名的应用数据目录,用来存放数据,所以linux的home目录在android中是以data/data目录呈现的,而不同的用户则是以不同的应用来表示.

Android的数据存储

android的数据存储主要有文件存储,设置文件,数据库以及云存储等几种存储方式.

  1. 文件存储
    android的文件存储一般是存储在扩展存储器上,也就是我们说的SD卡,但是现在很多手机已经不支持可插拔式的SD卡,而是有一个内部存储设备来提供数据储存,不过在一些平板上仍然是除了内部存储之外还提供一个可插拔SD卡的接口,来提供数据的存储以及迁移.文件通常是存储在android系统的sdcard目录下,而mnt,则是记录android挂载的外部存储信息,比如说mnt/sdcard,这其实是一个短链接指向的sdcard目录,而sdcard目录也是短链,通常指向storage目录下的文件

  2. 设置文件
    我们也可以使用设置文件来进行存储数据,Android开发中,通常通过SharedPreferences类提供的数据读取接口用来存储和读取数据,.设置文件通常存储在data/data/应用包名/shared_prefs目录下,默认的设置文件名为:应用包名_preferences.xml,设置文件的加载和写入都是线程安全的,但不是进程安全的,这点需要注意一下,避免在不同进程中同时操作一份设置文件。

  3. 数据库储存
    我们也可以为应用创建一个自身的数据库用于存储数据,android的数据库是使用的 SQLite关系型数据库,同样,数据库存放的地址是应用数据目录下的database子目录下,即 data/data/应用包名/databases下,我们也可以在扩展存储卡中创建数据库,达到数据共享的目的,在实践中要注意的是保持同时访问的数据库SqliteDatabase对象为一个,来控制并发访问数据库的安全性,也可以通过SDK下的工具加载数据库并操作数据库

    1
    2
    adb shell
    sqlite3 data/data/应用包名/databases/xx.db