学习笔记—基于JS/ets的轻量级存储

系统
今天就给大家分享我的JS/ets的轻量级存储的学习笔记,类似于Java的轻量级偏好数据库,所以我喜欢称它为JS/ets的轻量级偏好数据库,如果此称呼有问题的话,希望各位多多指教,与各位开发者们一起交流学习

[[440150]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

前言

数据存储对于应用开发是必不可少的一环,今天就给大家分享我的JS/ets的轻量级存储的学习笔记O(∩_∩)O,类似于Java的轻量级偏好数据库,所以我喜欢称它为JS/ets的轻量级偏好数据库,如果此称呼有问题的话,希望各位多多指教,与各位开发者们一起交流学习||ヽ( ̄▽ ̄)ノミ|Ю

轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型。要注意的是,该模块接口从API version 6开始支持的哦~

效果图

【木棉花】学习笔记——基于JS/ets的轻量级存储-鸿蒙HarmonyOS技术社区

正文

1. 创建一个Empty eTS Ability应用

DevEco Studio下载安装成功后,打开DevEco Studio,点击左上角的File,点击New,再选择New Project,选择Empty Ability选项,点击Next按钮。

【木棉花】学习笔记——基于JS/ets的轻量级存储-鸿蒙HarmonyOS技术社区

将文件命名为Storage(文件名不能出现中文或者特殊字符,否则将无法成功创建项目文件),Project Type勾选Application,选择保存路径,Language勾选eTS,选择API7,设备勾选Phone,最后点击Finish按钮。

【木棉花】学习笔记——基于JS/ets的轻量级存储-鸿蒙HarmonyOS技术社区

2. 导入模块

基于JS/ets的轻量级存储是需要用到dataStorage的,来自于’@ohos.data.storage’。

  1. import dataStorage from '@ohos.data.storage' 

3. 通过数据存储路径创建Storage

目前应用程序内部数据存储路径必须为‘/date/date/文件名’,这一点必须牢牢记住,否则就会无法进行轻量级存储了。

定义好应用程序内部数据存储路径后,通过dataStorage.getStorageSync读取指定文件,将数据加载到Storage实例,用于数据操作。

  1. const STORAGE_PATH = '/data/data/mystorage'//应用程序内部数据存储路径 
  2. var storage//定义Storage实例 
  3. storage = dataStorage.getStorageSync(STORAGE_PATH)//创建Storage实例 

4. 检查Storage实例是否包含键值的存储

hasSync可用于检查存储对象是否包含名为给定key的存储,并返回参数类型为boolean的参数,为参数为true表示存在,false表示不存在。

  1. const STORAGE_KEY = 'MY_STORAGE_KEY'//定义key 
  2. @State isExist: boolean = false 
  3. this.isExist = storage.hasSync(STORAGE_KEY)//检查存储对象是否包含键值的存储 

5. 写入数据并实例持久化

写入数据可通过putSync,必须先获取指定文件对应的Storage实例,然后借助putSync将数据写入Storage实例中。

实例持久化数据可通过flushSync,将当前storage对象中的修改保存到当前的storage,并同步存储到文件中。但要值得注意的是,目前模拟器对这一功能兼容的不完善,无法持久化的,如果后台把程序杀死,数据一样会消失的。

  1. var value = 0//定义value 
  2. storage.putSync(STORAGE_KEY, value)//写入数据 
  3. storage.flushSync()//实例持久化数据 

6. 获取数据

getSync为获取键对应的值,如果值为null或者非默认值类型,返回默认数据。

  1. @State Value: number = 0 
  2. this.Value = storage.getSync(STORAGE_KEY, -1)//获取key对应的数据,如果不存在则返回默认数据(-1) 

7. 删除数据

deleteSync为从存储对象中删除名为给定key的存储。

clearSync则为清除此存储对象中的所有存储。

  1. storage.deleteSync(STORAGE_KEY)//删除key对应的数据 
  2. //store.clearSync()//删除所有数据 

8. 删除Storage实例

dataStorage.deleteStorageSync为从内存中移除指定文件对应的Storage单实例,并删除指定文件及其备份文件、损坏文件。

dataStorage.removeStorageFromCacheSync则为从内存中移除指定文件对应的Storage单实例。

  1. storage = dataStorage.deleteStorageSync(STORAGE_PATH)//删除Storage实例并删除指定文件及其备份文件、损坏文件 
  2. //storage = dataStorage.removeStorageFromCacheSync(STORAGE_PATH)//仅删除Storage实例 

完整源码

index.ets:

  1. import dataStorage from '@ohos.data.storage';//导入模块 
  2. const STORAGE_PATH = '/data/data/mystorage'//应用程序内部数据存储路径 
  3. const STORAGE_KEY = 'MY_STORAGE_KEY'//定义key 
  4. var storage//定义Storage实例 
  5. var value = 0//定义value 
  6.  
  7. @Entry 
  8. @Component 
  9. struct Index { 
  10.   @State Value: number = 0 
  11.   @State isExist: boolean = false 
  12.  
  13.   build() { 
  14.     Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 
  15.       Button('创建轻量级数据库\ngetStorageSync'
  16.         .height(80) 
  17.         .width(330) 
  18.         .fontSize(30) 
  19.         .margin(10) 
  20.         .onClick(() => { 
  21.           storage = dataStorage.getStorageSync(STORAGE_PATH)//创建Storage实例 
  22.         }) 
  23.       Button('删除轻量级数据库\ndeleteStorageSync'
  24.         .height(80) 
  25.         .width(330) 
  26.         .fontSize(30) 
  27.         .margin(10) 
  28.         .onClick(() => { 
  29.           storage = dataStorage.deleteStorageSync(STORAGE_PATH)//删除Storage实例并删除指定文件及其备份文件、损坏文件 
  30.           //storage = dataStorage.removeStorageFromCacheSync(STORAGE_PATH)//仅删除Storage实例 
  31.         }) 
  32.       Button('写入数据(value加1)\nputSync'
  33.         .height(80) 
  34.         .width(330) 
  35.         .fontSize(30) 
  36.         .margin(10) 
  37.         .onClick(() => { 
  38.           value++ 
  39.           storage.putSync(STORAGE_KEY, value)//写入数据 
  40.           storage.flushSync()//实例持久化数据 
  41.         }) 
  42.       Button('删除数据\ndeleteSync'
  43.         .height(80) 
  44.         .width(330) 
  45.         .fontSize(30) 
  46.         .margin(10) 
  47.         .onClick(() => { 
  48.           storage.deleteSync(STORAGE_KEY)//删除key对应的数据 
  49.           //store.clearSync()//删除所有数据 
  50.         }) 
  51.       Button('检查键是否存在\nhasSync:' + (this.isExist == true ? 'true' : 'false')) 
  52.         .height(80) 
  53.         .width(330) 
  54.         .fontSize(30) 
  55.         .margin(10) 
  56.         .onClick(() => { 
  57.           this.isExist = storage.hasSync(STORAGE_KEY)//检查存储对象是否包含键值的存储 
  58.         }) 
  59.       Button('读取数据\ngetSync:Value=' + this.Value) 
  60.         .height(80) 
  61.         .width(330) 
  62.         .fontSize(30) 
  63.         .margin(10) 
  64.         .onClick(() => { 
  65.           this.Value = storage.getSync(STORAGE_KEY, -1)//获取key对应的数据,如果不存在则返回默认数据(-1) 
  66.         }) 
  67.     } 
  68.     .width('100%'
  69.     .height('100%'
  70.   } 

文章相关附件可以点击下面的原文链接前往下载

https://harmonyos.51cto.com/resource/1577

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2023-06-27 16:42:18

Tinygrad深度学习工具

2020-11-11 12:13:59

JS

2011-03-02 10:03:44

SaturnJSJS

2023-11-26 09:06:46

2022-06-06 22:23:26

Tina工具Markdown

2023-12-04 08:24:23

2022-05-12 08:58:03

开源日志查询日志可视化

2009-07-17 14:38:51

轻量级Swing组件

2009-07-14 18:05:28

轻量级Swing组件

2022-07-15 16:39:19

PythonWhoosh工具

2016-03-31 15:25:09

2022-12-29 09:49:06

轻量级架构决策

2021-04-14 13:32:50

Redis轻量级分布式

2022-01-26 15:23:03

ArkUI开发鸿蒙

2009-09-11 08:26:49

Linux系统CRUX 2.6Linux

2023-08-09 08:01:38

场景Redis接口

2020-06-19 15:38:08

分析工具GoatCounter开发

2016-10-14 16:35:39

2019-05-07 14:42:03

深度学习编程人工智能

2023-12-12 13:50:00

代码业务状态
点赞
收藏

51CTO技术栈公众号