js-apis-data-storage.md 23.6 KB
Newer Older
Z
zengyawen 已提交
1
# 轻量级存储
Z
zengyawen 已提交
2 3 4 5

轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型。


G
ge-yafang 已提交
6
> **说明:**
Z
zengyawen 已提交
7 8 9 10
>
> - 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
> - 从API Version 9开始,该接口不再维护,推荐使用新接口[`@ohos.data.preferences`](js-apis-data-preferences.md)。
Z
zengyawen 已提交
11 12 13


## 导入模块
Z
zengyawen 已提交
14

G
ge-yafang 已提交
15
```js
16
import data_storage from '@ohos.data.storage';
Z
zengyawen 已提交
17 18
```

G
ge-yafang 已提交
19
## 常量
Z
zengyawen 已提交
20

G
ge-yafang 已提交
21
**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.Preferences.Core
22

Z
zengyawen 已提交
23 24
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
25 26
| MAX_KEY_LENGTH | string | 是 | 否 | key的最大长度限制,需小于80字节。 |
| MAX_VALUE_LENGTH | string | 是 | 否 | value的最大长度限制,需小于8192字节。 |
Z
zengyawen 已提交
27 28


29
## data_storage.getStorageSync
Z
zengyawen 已提交
30 31

getStorageSync(path: string): Storage
Z
zengyawen 已提交
32

G
ge-yafang 已提交
33
读取指定文件,将数据加载到Storage实例,用于数据操作。
Z
zengyawen 已提交
34

G
ge-yafang 已提交
35
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
36

G
ge-yafang 已提交
37
**参数:**
Z
zengyawen 已提交
38 39 40 41
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
42
**返回值:**
Z
zengyawen 已提交
43 44 45 46
  | 类型 | 说明 |
  | -------- | -------- |
  | [Storage](#storage) | 获取到要操作的Storage实例,用于进行数据存储操作。 |

G
ge-yafang 已提交
47
**示例:**
G
ge-yafang 已提交
48
  ```js
49 50 51 52 53 54
  import data_storage from '@ohos.data.storage'
  
  var path = '/data/storage/el2/database/test_storage'
  let storage = data_storage.getStorageSync(path + '/mystore')
  storage.putSync('startup', 'auto')
  storage.flushSync()
Z
zengyawen 已提交
55
  
Z
zengyawen 已提交
56 57 58
  ```


59
## data_storage.getStorage
Z
zengyawen 已提交
60 61

getStorage(path: string, callback: AsyncCallback<Storage>): void
Z
zengyawen 已提交
62

G
ge-yafang 已提交
63
读取指定文件,将数据加载到Storage实例,用于数据操作,使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
64

G
ge-yafang 已提交
65
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
66

G
ge-yafang 已提交
67
**参数:**
Z
zengyawen 已提交
68 69 70 71 72
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |
  | callback | AsyncCallback<[Storage](#storage)> | 是 | 回调函数。 |

G
ge-yafang 已提交
73
**示例:**
G
ge-yafang 已提交
74
  ```js
75
  import data_storage from '@ohos.data.storage'
Z
zengyawen 已提交
76
  
77 78
  var path = '/data/storage/el2/database/test_storage'
  data_storage.getStorage(path + '/mystore', function (err, storage) {
79
      if (err) {
80
          console.info("Get the storage failed, path: " + path + '/mystore')
81 82
          return;
      }
83 84 85
      storage.putSync('startup', 'auto')
      storage.flushSync()
  })
Z
zengyawen 已提交
86 87 88
  ```


89
## data_storage.getStorage
Z
zengyawen 已提交
90 91

getStorage(path: string): Promise<Storage>
Z
zengyawen 已提交
92

G
ge-yafang 已提交
93
读取指定文件,将数据加载到Storage实例,用于数据操作,使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
94

G
ge-yafang 已提交
95
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
96

G
ge-yafang 已提交
97
**参数:**
Z
zengyawen 已提交
98 99 100 101
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
102
**返回值:**
Z
zengyawen 已提交
103 104 105 106
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<[Storage](#storage)> | Promise实例,用于异步获取结果。 |

G
ge-yafang 已提交
107
**示例:**
G
ge-yafang 已提交
108
  ```js
109
  import data_storage from '@ohos.data.storage'
Z
zengyawen 已提交
110
  
111 112 113 114 115 116 117 118 119
  var path = '/data/storage/el2/database/test_storage'
  
  let getPromise = data_storage.getStorage(path + '/mystore')
  getPromise.then((storage) => {
      storage.putSync('startup', 'auto')
      storage.flushSync()
  }).catch((err) => {
      console.info("Get the storage failed, path: " + path + '/mystore')
  })
Z
zengyawen 已提交
120 121 122
  ```


123
## data_storage.deleteStorageSync
Z
zengyawen 已提交
124 125

deleteStorageSync(path: string): void
Z
zengyawen 已提交
126

G
ge-yafang 已提交
127
从内存中移除指定文件对应的Storage单实例,并删除指定文件及其备份文件、损坏文件。删除指定文件时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。
Z
zengyawen 已提交
128

G
ge-yafang 已提交
129
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
130

G
ge-yafang 已提交
131
**参数:**
Z
zengyawen 已提交
132 133 134 135
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
136
**示例:**
G
ge-yafang 已提交
137
  ```js
138
  data_storage.deleteStorageSync(path + '/mystore')
Z
zengyawen 已提交
139 140 141
  ```


142
## data_storage.deleteStorage
Z
zengyawen 已提交
143

144
deleteStorage(path: string, callback: AsyncCallback<void>): void
Z
zengyawen 已提交
145

G
ge-yafang 已提交
146
从内存中移除指定文件对应的Storage单实例,并删除指定文件及其备份文件、损坏文件。删除指定文件时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题,使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
147

G
ge-yafang 已提交
148
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
149

G
ge-yafang 已提交
150
**参数:**
Z
zengyawen 已提交
151 152 153 154 155
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |

G
ge-yafang 已提交
156
**示例:**
G
ge-yafang 已提交
157
  ```js
158
  data_storage.deleteStorage(path + '/mystore', function (err) {
Z
zengyawen 已提交
159 160 161 162 163 164 165 166 167
      if (err) {
          console.info("Deleted failed with err: " + err)
          return
      }
      console.info("Deleted successfully.")
  })
  ```


168
## data_storage.deleteStorage
Z
zengyawen 已提交
169 170

deleteStorage(path: string): Promise<void>
Z
zengyawen 已提交
171

G
ge-yafang 已提交
172
从内存中移除指定文件对应的Storage单实例,并删除指定文件及其备份文件、损坏文件。删除指定文件时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题,使用promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
173

G
ge-yafang 已提交
174
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
175

G
ge-yafang 已提交
176
**参数:**
Z
zengyawen 已提交
177 178 179 180
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
181
**返回值:**
Z
zengyawen 已提交
182 183 184 185
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步获取结果。 |

G
ge-yafang 已提交
186
**示例:**
G
ge-yafang 已提交
187
  ```js
188
  let promisedelSt = data_storage.deleteStorage(path + '/mystore')
189
  promisedelSt.then(() => {
Z
zengyawen 已提交
190 191 192 193 194 195 196
      console.info("Deleted successfully.")
  }).catch((err) => {
      console.info("Deleted failed with err: " + err)
  })
  ```


197
## data_storage.removeStorageFromCacheSync
Z
zengyawen 已提交
198 199

removeStorageFromCacheSync(path: string): void
Z
zengyawen 已提交
200

Z
zengyawen 已提交
201
从内存中移除指定文件对应的Storage单实例。移除Storage单实例时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。
Z
zengyawen 已提交
202

G
ge-yafang 已提交
203
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
204

G
ge-yafang 已提交
205
**参数:**
Z
zengyawen 已提交
206 207 208 209
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
210
**示例:**
G
ge-yafang 已提交
211
  ```js
212
  data_storage.removeStorageFromCacheSync(path + '/mystore')
Z
zengyawen 已提交
213 214 215
  ```


216
## data_storage.removeStorageFromCache
Z
zengyawen 已提交
217

218
removeStorageFromCache(path: string, callback: AsyncCallback<void>): void
Z
zengyawen 已提交
219

G
ge-yafang 已提交
220
从内存中移除指定文件对应的Storage单实例。移除Storage单实例时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
221

G
ge-yafang 已提交
222
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
223

G
ge-yafang 已提交
224
**参数:**
Z
zengyawen 已提交
225 226 227
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |
228
  | callback | AsyncCallback<void> | 是 | 回调函数。 |
Z
zengyawen 已提交
229

G
ge-yafang 已提交
230
**示例:**
G
ge-yafang 已提交
231
  ```js
232
  data_storage.removeStorageFromCache(path + '/mystore', function (err) {
Z
zengyawen 已提交
233 234 235 236 237 238 239 240 241
      if (err) {
          console.info("Removed storage from cache failed with err: " + err)
          return
      }
      console.info("Removed storage from cache successfully.")
  })
  ```


242
## data_storage.removeStorageFromCache
Z
zengyawen 已提交
243 244

removeStorageFromCache(path: string): Promise<void>
Z
zengyawen 已提交
245

G
ge-yafang 已提交
246
从内存中移除指定文件对应的Storage单实例。移除Storage单实例时,应用不允许再使用该实例进行数据操作,否则会出现数据一致性问题。使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
247

G
ge-yafang 已提交
248
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
249

G
ge-yafang 已提交
250
**参数:**
Z
zengyawen 已提交
251 252 253 254
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
255
**返回值:**
Z
zengyawen 已提交
256 257 258 259
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步获取结果。 |

G
ge-yafang 已提交
260
**示例:**
G
ge-yafang 已提交
261
  ```js
262
  let promiserevSt = data_storage.removeStorageFromCache(path + '/mystore')
263
  promiserevSt.then(() => {
Z
zengyawen 已提交
264 265 266 267 268 269 270
      console.info("Removed storage from cache successfully.")
  }).catch((err) => {
      console.info("Removed storage from cache failed with err: " + err)
  })
  ```


271
## Storage
Z
zengyawen 已提交
272

Z
zengyawen 已提交
273
提供获取和修改存储数据的接口。
Z
zengyawen 已提交
274 275


276
### getSync
Z
zengyawen 已提交
277 278

getSync(key: string, defValue: ValueType): ValueType
Z
zengyawen 已提交
279 280

获取键对应的值,如果值为null或者非默认值类型,返回默认数据。
Z
zengyawen 已提交
281

G
ge-yafang 已提交
282
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
283

G
ge-yafang 已提交
284
**参数:**
Z
zengyawen 已提交
285 286
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
287 288
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
  | defValue | [ValueType](#valuetype) | 是 | 给定key的存储不存在,则要返回的默认值。支持number、string、boolean。 |
Z
zengyawen 已提交
289

G
ge-yafang 已提交
290
**返回值:**
Z
zengyawen 已提交
291 292 293 294
  | 类型 | 说明 |
  | -------- | -------- |
  | ValueType | 键对应的值,如果值为null或者非默认值类型,返回默认数据。 |

G
ge-yafang 已提交
295
**示例:**
G
ge-yafang 已提交
296
  ```js
Z
zengyawen 已提交
297 298 299 300 301
  let value = storage.getSync('startup', 'default')
  console.info("The value of startup is " + value)
  ```


302
### get
Z
zengyawen 已提交
303 304

get(key: string, defValue: ValueType, callback: AsyncCallback<ValueType>): void
Z
zengyawen 已提交
305

G
ge-yafang 已提交
306
获取键对应的值,如果值为null或者非默认值类型,返回默认数据。使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
307

G
ge-yafang 已提交
308
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
309

G
ge-yafang 已提交
310
**参数:**
Z
zengyawen 已提交
311 312
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
313 314
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
  | defValue | [ValueType](#valuetype) | 是 | 默认返回值。支持number、string、boolean。 |
Z
zengyawen 已提交
315 316
  | callback | AsyncCallback<ValueType> | 是 | 回调函数。 |

G
ge-yafang 已提交
317
**示例:**
G
ge-yafang 已提交
318
  ```js
Z
zengyawen 已提交
319 320 321 322 323 324 325 326 327 328
  storage.get('startup', 'default', function(err, value) {
      if (err) {
          console.info("Get the value of startup failed with err: " + err)
          return
      }
      console.info("The value of startup is " + value)
  })
  ```


329
### get
Z
zengyawen 已提交
330 331

get(key: string, defValue: ValueType): Promise<ValueType>
Z
zengyawen 已提交
332

G
ge-yafang 已提交
333
获取键对应的值,如果值为null或者非默认值类型,返默认数据。使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
334

G
ge-yafang 已提交
335
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
336

G
ge-yafang 已提交
337 338 339 340 341 342
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | string | 是 | 要获取的存储key名称,不能为空。 |
| defValue | [ValueType](#valuetype) | 是 | 默认返回值。支持number、string、boolean。 |
Z
zengyawen 已提交
343

G
ge-yafang 已提交
344
**返回值:**
Z
zengyawen 已提交
345 346 347 348
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<ValueType> | Promise实例,用于异步获取结果。 |

G
ge-yafang 已提交
349
**示例:**
G
ge-yafang 已提交
350
  ```js
351 352
  let promiseget = storage.get('startup', 'default')
  promiseget.then((value) => {
Z
zengyawen 已提交
353 354 355 356 357 358 359
      console.info("The value of startup is " + value)
  }).catch((err) => {
      console.info("Get the value of startup failed with err: " + err)
  })
  ```


360
### putSync
Z
zengyawen 已提交
361 362

putSync(key: string, value: ValueType): void
Z
zengyawen 已提交
363

Z
zengyawen 已提交
364
首先获取指定文件对应的Storage实例,然后借助Storage API将数据写入Storage实例,通过flush或者flushSync将Storage实例持久化。
Z
zengyawen 已提交
365

G
ge-yafang 已提交
366
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
367

G
ge-yafang 已提交
368
**参数:**
Z
zengyawen 已提交
369 370
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
371 372
  | key | string | 是 | 要修改的存储的key,不能为空。 |
  | value | [ValueType](#valuetype) | 是 | 存储的新值。支持number、string、boolean。 |
Z
zengyawen 已提交
373

G
ge-yafang 已提交
374
**示例:**
G
ge-yafang 已提交
375
  ```js
Z
zengyawen 已提交
376 377 378 379
  storage.putSync('startup', 'auto')
  ```


380
### put
Z
zengyawen 已提交
381 382

put(key: string, value: ValueType, callback: AsyncCallback<void>): void
Z
zengyawen 已提交
383

G
ge-yafang 已提交
384
首先获取指定文件对应的Storage实例,然后借助Storage API将数据写入Storage实例,通过flush或者flushSync将Storage实例持久化。使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
385

G
ge-yafang 已提交
386
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
387

G
ge-yafang 已提交
388
**参数:**
Z
zengyawen 已提交
389 390
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
391 392
  | key | string | 是 | 要修改的存储的key,不能为空。 |
  | value | [ValueType](#valuetype) | 是 | 存储的新值。支持number、string、boolean。 |
Z
zengyawen 已提交
393 394
  | callback | AsyncCallback<void> | 是 | 回调函数。 |

G
ge-yafang 已提交
395
**示例:**
G
ge-yafang 已提交
396
  ```js
Z
zengyawen 已提交
397 398 399 400 401 402 403 404 405 406
  storage.put('startup', 'auto', function (err) {
      if (err) {
          console.info("Put the value of startup failed with err: " + err)
          return
      }
      console.info("Put the value of startup successfully.")
  })
  ```


407
### put
Z
zengyawen 已提交
408 409

put(key: string, value: ValueType): Promise<void>
Z
zengyawen 已提交
410

G
ge-yafang 已提交
411
首先获取指定文件对应的Storage实例,然后借助Storage API将数据写入Storage实例,通过flush或者flushSync将Storage实例持久化。使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
412

G
ge-yafang 已提交
413
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
414

G
ge-yafang 已提交
415
**参数:**
Z
zengyawen 已提交
416 417
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
418 419
  | key | string | 是 | 要修改的存储的key,不能为空。 |
  | value | [ValueType](#valuetype) | 是 | 存储的新值。支持number、string、boolean。 |
Z
zengyawen 已提交
420

G
ge-yafang 已提交
421
**返回值:**
Z
zengyawen 已提交
422 423 424 425
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
426
**示例:**
G
ge-yafang 已提交
427
  ```js
428 429
  let promiseput = storage.put('startup', 'auto')
  promiseput.then(() => {
Z
zengyawen 已提交
430 431 432 433 434 435 436
      console.info("Put the value of startup successfully.")
  }).catch((err) => {
      console.info("Put the value of startup failed with err: " + err)
  })
  ```


437
### hasSync
Z
zengyawen 已提交
438 439

hasSync(key: string): boolean
Z
zengyawen 已提交
440

Z
zengyawen 已提交
441
检查存储对象是否包含名为给定key的存储。
Z
zengyawen 已提交
442

G
ge-yafang 已提交
443
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
444

G
ge-yafang 已提交
445
**参数:**
Z
zengyawen 已提交
446 447
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
448
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
Z
zengyawen 已提交
449

G
ge-yafang 已提交
450
**返回值:**
Z
zengyawen 已提交
451 452 453 454
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | true 表示存在,false表示不存在。 |

G
ge-yafang 已提交
455
**示例:**
G
ge-yafang 已提交
456
  ```js
Z
zengyawen 已提交
457 458 459 460 461 462 463
  let isExist = storage.hasSync('startup')
  if (isExist) {
      console.info("The key of startup is contained.")
  }
  ```


464
### has
Z
zengyawen 已提交
465 466

has(key: string, callback: AsyncCallback<boolean>): boolean
Z
zengyawen 已提交
467

G
ge-yafang 已提交
468
检查存储对象是否包含名为给定key的存储。使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
469

G
ge-yafang 已提交
470
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
471

G
ge-yafang 已提交
472
**参数:**
Z
zengyawen 已提交
473 474 475 476 477
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
  | callback | AsyncCallback<boolean> | 是 | 回调函数。 |

G
ge-yafang 已提交
478
**返回值:**
Z
zengyawen 已提交
479 480 481 482
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | true表示存在,false表示不存在。 |

G
ge-yafang 已提交
483
**示例:**
G
ge-yafang 已提交
484
  ```js
Z
zengyawen 已提交
485 486 487 488 489 490 491 492 493 494 495 496
  storage.has('startup', function (err, isExist) {
      if (err) {
          console.info("Check the key of startup failed with err: " + err)
          return
      }
      if (isExist) {
          console.info("The key of startup is contained.")
      }
  })
  ```


497
### has
Z
zengyawen 已提交
498 499

has(key: string): Promise<boolean>
Z
zengyawen 已提交
500

G
ge-yafang 已提交
501
检查存储对象是否包含名为给定key的存储。使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
502

G
ge-yafang 已提交
503
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
504

G
ge-yafang 已提交
505
**参数:**
Z
zengyawen 已提交
506 507
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
508
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
Z
zengyawen 已提交
509

G
ge-yafang 已提交
510
**返回值:**
Z
zengyawen 已提交
511 512 513 514
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<boolean> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
515
**示例:**
G
ge-yafang 已提交
516
  ```js
517 518
  let promisehas = storage.has('startup')
  promisehas.then((isExist) => {
Z
zengyawen 已提交
519 520 521 522 523 524 525 526 527
      if (isExist) {
          console.info("The key of startup is contained.")
      }
  }).catch((err) => {
      console.info("Check the key of startup failed with err: " + err)
  })
  ```


528
### deleteSync
Z
zengyawen 已提交
529 530

deleteSync(key: string): void
Z
zengyawen 已提交
531

Z
zengyawen 已提交
532
从存储对象中删除名为给定key的存储。
Z
zengyawen 已提交
533

G
ge-yafang 已提交
534
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
535

G
ge-yafang 已提交
536
**参数:**
Z
zengyawen 已提交
537 538 539 540
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称。它不能为空。 |

G
ge-yafang 已提交
541
**示例:**
G
ge-yafang 已提交
542
  ```js
Z
zengyawen 已提交
543 544 545 546
  storage.deleteSync('startup')
  ```


G
ge-yafang 已提交
547
### delete
Z
zengyawen 已提交
548 549

delete(key: string, callback: AsyncCallback<void>): void
Z
zengyawen 已提交
550

G
ge-yafang 已提交
551
从存储对象中删除名为给定key的存储。使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
552

G
ge-yafang 已提交
553
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
554

G
ge-yafang 已提交
555
**参数:**
Z
zengyawen 已提交
556 557 558 559 560
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |

G
ge-yafang 已提交
561
**示例:**
G
ge-yafang 已提交
562
  ```js
Z
zengyawen 已提交
563 564 565 566 567 568 569 570 571 572
  storage.delete('startup', function (err) {
      if (err) {
          console.info("Delete startup key failed with err: " + err)
          return
      }
      console.info("Deleted startup key successfully.")
  })
  ```


573
### delete
Z
zengyawen 已提交
574 575

delete(key: string): Promise<void>
Z
zengyawen 已提交
576

G
ge-yafang 已提交
577
从存储对象删除名为给定key的存储。使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
578

G
ge-yafang 已提交
579
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
580

G
ge-yafang 已提交
581
**参数:**
Z
zengyawen 已提交
582 583 584 585
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称。 |

G
ge-yafang 已提交
586
**返回值:**
Z
zengyawen 已提交
587 588 589 590
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
591
**示例:**
G
ge-yafang 已提交
592
  ```js
593 594
  let promisedel = storage.delete('startup')
  promisedel.then(() => {
Z
zengyawen 已提交
595 596 597 598 599 600 601
      console.info("Deleted startup key successfully.")
  }).catch((err) => {
      console.info("Delete startup key failed with err: " + err)
  })
  ```


602
### flushSync
Z
zengyawen 已提交
603 604

flushSync(): void
Z
zengyawen 已提交
605

Z
zengyawen 已提交
606
将当前storage对象中的修改保存到当前的storage,并同步存储到文件中。
Z
zengyawen 已提交
607

G
ge-yafang 已提交
608
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
609

G
ge-yafang 已提交
610
**示例:**
G
ge-yafang 已提交
611
  ```js
Z
zengyawen 已提交
612 613
  storage.flushSync()
  ```
Z
zengyawen 已提交
614 615


616
### flush
Z
zengyawen 已提交
617

Z
zengyawen 已提交
618
flush(callback: AsyncCallback<void>): void
Z
zengyawen 已提交
619

G
ge-yafang 已提交
620
将当前storage对象中的修改保存到当前的storage,并异步存储到文件中。使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
621

G
ge-yafang 已提交
622
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
623

G
ge-yafang 已提交
624
**参数:**
Z
zengyawen 已提交
625 626 627
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |
Z
zengyawen 已提交
628

G
ge-yafang 已提交
629
**示例:**
G
ge-yafang 已提交
630
  ```js
Z
zengyawen 已提交
631 632 633 634 635 636 637 638
  storage.flush(function (err) {
      if (err) {
          console.info("Flush to file failed with err: " + err)
          return
      }
      console.info("Flushed to file successfully.")
  })
  ```
Z
zengyawen 已提交
639 640


641
### flush
Z
zengyawen 已提交
642

Z
zengyawen 已提交
643
flush(): Promise<void>
Z
zengyawen 已提交
644

G
ge-yafang 已提交
645
将当前storage对象中的修改保存到当前的storage,并异步存储到文件中。使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
646

G
ge-yafang 已提交
647
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
648

G
ge-yafang 已提交
649
**返回值:**
Z
zengyawen 已提交
650 651 652
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |
Z
zengyawen 已提交
653

G
ge-yafang 已提交
654
**示例:**
G
ge-yafang 已提交
655
  ```js
656 657
  let promiseflush = storage.flush()
  promiseflush.then(() => {
Z
zengyawen 已提交
658 659 660 661 662
      console.info("Flushed to file successfully.")
  }).catch((err) => {
      console.info("Flush to file failed with err: " + err)
  })
  ```
Z
zengyawen 已提交
663

Z
zengyawen 已提交
664

665
### clearSync
Z
zengyawen 已提交
666 667

clearSync(): void
Z
zengyawen 已提交
668 669 670

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

G
ge-yafang 已提交
671
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
672

G
ge-yafang 已提交
673
**示例:**
G
ge-yafang 已提交
674
  ```js
Z
zengyawen 已提交
675 676
  storage.clearSync()
  ```
Z
zengyawen 已提交
677 678


679
### clear
Z
zengyawen 已提交
680

Z
zengyawen 已提交
681
clear(callback: AsyncCallback<void>): void
Z
zengyawen 已提交
682

G
ge-yafang 已提交
683
清除此存储对象中的所有存储。使用callback方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
684

G
ge-yafang 已提交
685
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
686

G
ge-yafang 已提交
687
**参数:**
Z
zengyawen 已提交
688 689 690 691
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |

G
ge-yafang 已提交
692
**示例:**
G
ge-yafang 已提交
693
  ```js
Z
zengyawen 已提交
694 695 696 697 698 699 700 701 702 703
  storage.clear(function (err) {
      if (err) {
          console.info("Clear to file failed with err: " + err)
          return
      }
      console.info("Cleared to file successfully.")
  })
  ```


704
### clear
Z
zengyawen 已提交
705 706

clear(): Promise<void>
Z
zengyawen 已提交
707

G
ge-yafang 已提交
708
清除此存储对象中的所有存储。使用Promise方式返回结果,此方法为异步方法。
Z
zengyawen 已提交
709

G
ge-yafang 已提交
710
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
711

G
ge-yafang 已提交
712
**返回值:**
Z
zengyawen 已提交
713 714 715 716
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
717
**示例:**
G
ge-yafang 已提交
718
  ```js
719 720
  let promiseclear = storage.clear()
  promiseclear.then(() => {
Z
zengyawen 已提交
721 722 723 724 725 726 727
      console.info("Cleared to file successfully.")
  }).catch((err) => {
      console.info("Clear to file failed with err: " + err)
  })
  ```


728
### on('change')
Z
zengyawen 已提交
729 730 731 732 733

on(type: 'change', callback: Callback<StorageObserver>): void

订阅数据变更者类需要实现StorageObserver接口,订阅的key的值发生变更后,在执行flush/flushSync方法后,callback方法会被回调。

G
ge-yafang 已提交
734
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
735

G
ge-yafang 已提交
736
**参数:**
Z
zengyawen 已提交
737 738 739 740 741
  | 参数名 | 类型 | 说明 |
  | -------- | -------- | -------- |
  | type | string | 事件类型,固定值'change',表示数据变更。 |
  | callback | Callback<[StorageObserver](#storageobserver)> | 回调对象实例。 |

G
ge-yafang 已提交
742
**示例:**
G
ge-yafang 已提交
743
  ```js
Z
zengyawen 已提交
744 745 746 747 748 749 750 751 752
  var observer = function (key) {
      console.info("The key of " + key + " changed.")
  }
  storage.on('change', observer)
  storage.putSync('startup', 'auto')
  storage.flushSync()  // observer will be called.
  ```


753
### off('change')
Z
zengyawen 已提交
754 755 756 757 758

off(type: 'change', callback: Callback<StorageObserver>): void

当不再进行订阅数据变更时,使用此接口取消订阅。

G
ge-yafang 已提交
759
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
760

G
ge-yafang 已提交
761
**参数:**
Z
zengyawen 已提交
762 763 764 765 766
  | 参数名 | 类型 | 说明 |
  | -------- | -------- | -------- |
  | type | string | 事件类型,固定值'change',表示数据变更。 |
  | callback | Callback<[StorageObserver](#storageobserver)> | 需要取消的回调对象实例。 |

G
ge-yafang 已提交
767
**示例:**
G
ge-yafang 已提交
768
  ```js
Z
zengyawen 已提交
769 770 771 772 773 774 775
  var observer = function (key) {
      console.info("The key of " + key + " changed.")
  }
  storage.off('change', observer)
  ```


776 777
## StorageObserver

G
ge-yafang 已提交
778
**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.Preferences.Core
Z
zengyawen 已提交
779

Z
zengyawen 已提交
780 781 782
| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | string | 否 | 变更的数据内容。 |
G
ge-yafang 已提交
783 784 785 786 787

## ValueType

用于表示允许的数据字段类型。

G
ge-yafang 已提交
788
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
G
ge-yafang 已提交
789 790 791 792 793 794

| 名称    | 说明                 |
| ------- | -------------------- |
| number  | 表示值类型为数字。   |
| string  | 表示值类型为字符。   |
| boolean | 表示值类型为布尔值。 |