第8章:数据持久化与网络请求
8.1 本地数据存储
8.1.1 本地存储概述
ArkTS提供了多种本地数据存储方案,适用于不同场景的数据持久化需求:
- 轻量级存储:适用于简单键值对数据(如用户偏好设置)
- 文件存储:适用于结构化/非结构化数据(如日志、图片缓存)
- 数据库存储:适用于复杂关系型数据(后续章节单独介绍)
8.1.2 轻量级存储(Preferences)
// 导入Preferences模块
import preferences from '@ohos.data.preferences'
// 1. 获取Preferences实例
let pref: Promise<preferences.Preferences> =
preferences.getPreferences(context, 'mypref')
// 2. 写入数据
pref.then((pref) => {
pref.put('username', 'ArkUser').flush()
})
// 3. 读取数据
pref.then((pref) => {
pref.get('username', 'default').then((value) => {
console.log(value) // 输出:ArkUser
})
})
8.1.3 文件存储(File API)
// 导入文件系统模块
import fs from '@ohos.file.fs'
// 1. 获取应用文件目录路径
let dir = globalThis.abilityContext.filesDir
// 2. 写入文件
let filePath = dir + '/data.txt'
fs.writeText(filePath, 'Hello ArkTS').then(() => {
console.log('写入成功')
})
// 3. 读取文件
fs.readText(filePath).then((content) => {
console.log(content) // 输出:Hello ArkTS
})
8.1.4 存储方案对比
| 方案类型 | 容量限制 | 数据类型 | 适用场景 |
|---|---|---|---|
| Preferences | 1MB | 键值对 | 用户配置、简单状态 |
| 文件存储 | 无硬限制 | 任意格式 | 日志、媒体文件、缓存 |
| 关系型数据库 | 无硬限制 | 结构化关系数据 | 复杂业务数据(见8.2节) |
8.1.5 最佳实践
- 敏感数据加密:使用
@ohos.security.crypto对敏感信息加密 - 存储空间管理:定期清理缓存文件
- 异常处理:
try {
await fs.writeText(path, content)
} catch (err) {
console.error(`存储失败: ${err.code}`)
}
8.1.6 实战练习
实现一个简单的笔记应用:
- 使用Preferences存储用户主题偏好
- 使用文件存储系统保存笔记内容
- 实现笔记的增删改查功能
扩展阅读:HarmonyOS分布式数据管理(跨设备数据同步能力将在第14章详解)
