鸿蒙应用开发中Preferences首选项本地存储实践
在鸿蒙应用开发过程中,将数据写入到手机沙箱目录中是一个常见的需求。要想将数据存储到沙箱目录下有四种方法,第一种是通过写文件的形式将数据保存到文件中;第二种是通过PersistentStorage将数据写入到文件中;第三种是通过Preferences首选项将数据写入到沙箱文件中;第四种是将数据存储到sqlite数据库中。这篇文章要讲的是第三种方式,即通过Preferences首选项实例的相关方法将数据存储到本机沙箱文件中。首先第一步是要获取Preferences实例,代码如下
async getStore() { const store: preferences.Preferences = await preferences.getPreferences(AppContextInstance.context, "preferences_store") return store }
获取到Preferences实例后,可以调用异步的put方法或同步的putSync方法将键值对写入沙箱文件。要注意的是,写入数据操作结束后需要调用实例的flush方法将数据完全写入沙箱文件中,flush也有对应的同步实现flushSync。代码示例如下:
async set(key: string, val: DataTypeConstant.CommonValType) { const store: preferences.Preferences = await this.getStore() store.putSync(key, val) } async flush() { const store: preferences.Preferences = await this.getStore() store.flushSync() }
如果要使用已经存储在Preferences中的数据,可以调用实例的异步方法get或同步方法getSync。代码示例如下:
async get(key: string) { const store: preferences.Preferences = await this.getStore() return store.getSync(key, '') as DataTypeConstant.CommonValType }
如果数据成功存储到Preferences沙箱文件中,可以看到沙箱目录下会产生对应的文件,例如下面目录结构中的preferences_store及preferences_store.lock就是我调用实例方法后产生沙箱文件。
📁 [根目录] ├── 📁 chip_prod ├── 📁 config ├── 📁 cust ├── 📁 data │ └── 📁 app │ └── 📁 el2 │ └── 📁 100 │ └── 📁 base │ └── 📁 com.example.myapp001 │ ├── 📁 .backup │ ├── 📁 cache │ ├── 📁 files │ ├── 📁 haps │ │ └── 📁 entry │ │ ├── 📁 cache │ │ ├── 📁 files │ │ └── 📁 preferences │ │ ├── preferences_store │ │ └── preferences_store.lock │ ├── 📁 preferences │ └── 📁 temp └── 📁 com.huawei.hmos.arkwebcore └── ... (其他相关目录省略)