學習筆記—基于JS/ets的輕量級存儲
前言
數據存儲對于應用開發是必不可少的一環,今天就給大家分享我的JS/ets的輕量級存儲的學習筆記O(∩_∩)O,類似于Java的輕量級偏好數據庫,所以我喜歡稱它為JS/ets的輕量級偏好數據庫,如果此稱呼有問題的話,希望各位多多指教,與各位開發者們一起交流學習||ヽ( ̄▽ ̄)ノミ|Ю
輕量級存儲為應用提供key-value鍵值型的文件數據處理能力,支持應用對數據進行輕量級存儲及查詢。數據存儲形式為鍵值對,鍵的類型為字符串型,值的存儲數據類型包括數字型、字符型、布爾型。要注意的是,該模塊接口從API version 6開始支持的哦~
效果圖

正文
1. 創建一個Empty eTS Ability應用
DevEco Studio下載安裝成功后,打開DevEco Studio,點擊左上角的File,點擊New,再選擇New Project,選擇Empty Ability選項,點擊Next按鈕。

將文件命名為Storage(文件名不能出現中文或者特殊字符,否則將無法成功創建項目文件),Project Type勾選Application,選擇保存路徑,Language勾選eTS,選擇API7,設備勾選Phone,最后點擊Finish按鈕。

2. 導入模塊
基于JS/ets的輕量級存儲是需要用到dataStorage的,來自于’@ohos.data.storage’。
- import dataStorage from '@ohos.data.storage'
3. 通過數據存儲路徑創建Storage
目前應用程序內部數據存儲路徑必須為‘/date/date/文件名’,這一點必須牢牢記住,否則就會無法進行輕量級存儲了。
定義好應用程序內部數據存儲路徑后,通過dataStorage.getStorageSync讀取指定文件,將數據加載到Storage實例,用于數據操作。
- const STORAGE_PATH = '/data/data/mystorage'//應用程序內部數據存儲路徑
- var storage//定義Storage實例
- storage = dataStorage.getStorageSync(STORAGE_PATH)//創建Storage實例
4. 檢查Storage實例是否包含鍵值的存儲
hasSync可用于檢查存儲對象是否包含名為給定key的存儲,并返回參數類型為boolean的參數,為參數為true表示存在,false表示不存在。
- const STORAGE_KEY = 'MY_STORAGE_KEY'//定義key
- @State isExist: boolean = false
- this.isExist = storage.hasSync(STORAGE_KEY)//檢查存儲對象是否包含鍵值的存儲
5. 寫入數據并實例持久化
寫入數據可通過putSync,必須先獲取指定文件對應的Storage實例,然后借助putSync將數據寫入Storage實例中。
實例持久化數據可通過flushSync,將當前storage對象中的修改保存到當前的storage,并同步存儲到文件中。但要值得注意的是,目前模擬器對這一功能兼容的不完善,無法持久化的,如果后臺把程序殺死,數據一樣會消失的。
- var value = 0//定義value
- storage.putSync(STORAGE_KEY, value)//寫入數據
- storage.flushSync()//實例持久化數據
6. 獲取數據
getSync為獲取鍵對應的值,如果值為null或者非默認值類型,返回默認數據。
- @State Value: number = 0
- this.Value = storage.getSync(STORAGE_KEY, -1)//獲取key對應的數據,如果不存在則返回默認數據(-1)
7. 刪除數據
deleteSync為從存儲對象中刪除名為給定key的存儲。
clearSync則為清除此存儲對象中的所有存儲。
- storage.deleteSync(STORAGE_KEY)//刪除key對應的數據
- //store.clearSync()//刪除所有數據
8. 刪除Storage實例
dataStorage.deleteStorageSync為從內存中移除指定文件對應的Storage單實例,并刪除指定文件及其備份文件、損壞文件。
dataStorage.removeStorageFromCacheSync則為從內存中移除指定文件對應的Storage單實例。
- storage = dataStorage.deleteStorageSync(STORAGE_PATH)//刪除Storage實例并刪除指定文件及其備份文件、損壞文件
- //storage = dataStorage.removeStorageFromCacheSync(STORAGE_PATH)//僅刪除Storage實例
完整源碼
index.ets:
- import dataStorage from '@ohos.data.storage';//導入模塊
- const STORAGE_PATH = '/data/data/mystorage'//應用程序內部數據存儲路徑
- const STORAGE_KEY = 'MY_STORAGE_KEY'//定義key
- var storage//定義Storage實例
- var value = 0//定義value
- @Entry
- @Component
- struct Index {
- @State Value: number = 0
- @State isExist: boolean = false
- build() {
- Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
- Button('創建輕量級數據庫\ngetStorageSync')
- .height(80)
- .width(330)
- .fontSize(30)
- .margin(10)
- .onClick(() => {
- storage = dataStorage.getStorageSync(STORAGE_PATH)//創建Storage實例
- })
- Button('刪除輕量級數據庫\ndeleteStorageSync')
- .height(80)
- .width(330)
- .fontSize(30)
- .margin(10)
- .onClick(() => {
- storage = dataStorage.deleteStorageSync(STORAGE_PATH)//刪除Storage實例并刪除指定文件及其備份文件、損壞文件
- //storage = dataStorage.removeStorageFromCacheSync(STORAGE_PATH)//僅刪除Storage實例
- })
- Button('寫入數據(value加1)\nputSync')
- .height(80)
- .width(330)
- .fontSize(30)
- .margin(10)
- .onClick(() => {
- value++
- storage.putSync(STORAGE_KEY, value)//寫入數據
- storage.flushSync()//實例持久化數據
- })
- Button('刪除數據\ndeleteSync')
- .height(80)
- .width(330)
- .fontSize(30)
- .margin(10)
- .onClick(() => {
- storage.deleteSync(STORAGE_KEY)//刪除key對應的數據
- //store.clearSync()//刪除所有數據
- })
- Button('檢查鍵是否存在\nhasSync:' + (this.isExist == true ? 'true' : 'false'))
- .height(80)
- .width(330)
- .fontSize(30)
- .margin(10)
- .onClick(() => {
- this.isExist = storage.hasSync(STORAGE_KEY)//檢查存儲對象是否包含鍵值的存儲
- })
- Button('讀取數據\ngetSync:Value=' + this.Value)
- .height(80)
- .width(330)
- .fontSize(30)
- .margin(10)
- .onClick(() => {
- this.Value = storage.getSync(STORAGE_KEY, -1)//獲取key對應的數據,如果不存在則返回默認數據(-1)
- })
- }
- .width('100%')
- .height('100%')
- }
- }
文章相關附件可以點擊下面的原文鏈接前往下載
https://harmonyos.51cto.com/resource/1577