当前位置:首页 > 行业动态 > 正文

安卓存储格式是什么

安卓存储格式包括SQLite数据库(.db)、文件系统(标准文件)、SharedPreferences(XML)

安卓存储格式详解

文件系统格式

安卓系统基于Linux内核,默认使用EXT4文件系统格式,支持以下特性:

  • 日志式文件系统:提高数据写入性能,支持延迟分配。
  • 兼容Linux权限:支持用户、组、其他用户的读写执行权限。
  • 扩展属性:支持文件元数据(如SELinux安全标签)。

部分厂商可能采用F2FS(Flash-Friendly File System)优化闪存读写,尤其在嵌入式存储设备中。


应用数据存储格式

安卓应用的数据存储分为多种类型,具体格式如下:

存储类型 存储位置 数据格式
内部存储 /data/data/<包名> 文件(如SQLite数据库、配置文件)、目录结构
外部存储 /storage/emulated/0(SD卡) 文件(图片、视频、文档)、遵循Scoped Storage规则(Android 10+)
SharedPreferences /data/data/<包名>/shared_prefs XML文件(键值对存储)
SQLite数据库 /data/data/<包名>/databases SQLite数据库文件(.db)
缓存文件 /data/data/<包名>/cache 临时文件(可被系统清理)

常见数据存储格式详解

  1. SQLite数据库

    • 格式:轻量级关系型数据库,文件后缀为.db
    • 用途:存储结构化数据(如用户信息、配置表)。
    • 示例:
      CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);
  2. SharedPreferences

    • 格式:XML文件,存储键值对(如booleanintString)。
    • 用途:轻量级配置(如用户设置、登录状态)。
    • 示例文件内容:
      <map>
          <string name="username">admin</string>
          <bool name="isLoggedIn" value="true"/>
      </map>
  3. 文件存储

    • 格式:直接读写文件(如文本、二进制文件)。
    • 用途:存储媒体文件(图片、视频)、日志、缓存数据。
    • API:FileOutputStreamFileInputStream
  4. 网络存储与云存储

    • 格式:依赖第三方服务(如JSON、Protobuf)。
    • 用途:同步数据到服务器、下载资源文件。

存储权限与兼容性

  • Android 10+ Scoped Storage
    强制应用使用MediaStoreStorage Access Framework访问外部存储,禁止直接操作/sdcard路径。
  • 沙箱机制
    应用只能访问自身目录(如/data/data/<包名>),需声明权限才能访问外部存储。

相关问题与解答

问题1:SQLite数据库与SharedPreferences有何区别?

解答

  • SQLite:适合存储复杂结构化数据(如多表关联),支持SQL查询,但性能较低。
  • SharedPreferences:仅适合存储简单键值对(如配置项),性能高,但无法处理多条记录或关联数据。

问题2:Android 11如何限制应用访问外部存储?

解答

  • 私有目录:应用只能访问自己创建的文件(如getExternalFilesDir()返回的路径)。
  • MediaStore:通过ContentResolver操作媒体文件(图片、视频)。
  • Storage Access Framework:通过用户选择特定文件(如Intent.ACTION_OPEN_DOCUMENT)。
  • 例外:MANAGE_EXTERNAL_STORAGE权限(仅限系统应用或特殊场景
0