js-apis-data-storage.md 24.5 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
G
ge-yafang 已提交
16
import dataStorage 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
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| MAX_KEY_LENGTH | string | 是 | 否 | key的最大长度限制,大小为80字节。 |
G
ge-yafang 已提交
26
| MAX_VALUE_LENGTH | string | 是 | 否 | value的最大长度限制,大小为8192字节。 |
Z
zengyawen 已提交
27 28


29
## dataStorage.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
Z
zengyawen 已提交
49 50
  import dataStorage from '@ohos.data.storage'
  import featureAbility from '@ohos.ability.featureAbility'
Z
zengyawen 已提交
51
  
52
  var context = featureAbility.getContext()
53 54 55 56 57
  context.getFilesDir((err, path) => {
      if (err) {
          console.error('getFilesDir failed. err: ' + JSON.stringify(err));
          return;
      }
P
PaDoBoo 已提交
58
      console.info('getFilesDir successful. path:' + JSON.stringify(path));
59 60 61 62
      let storage = dataStorage.getStorageSync(path + '/mystore')
      storage.putSync('startup', 'auto')
      storage.flushSync()
  });
Z
zengyawen 已提交
63 64 65
  ```


66
## dataStorage.getStorage
Z
zengyawen 已提交
67 68

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

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

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

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

G
ge-yafang 已提交
80
**示例:**
G
ge-yafang 已提交
81
  ```js
Z
zengyawen 已提交
82 83
  import dataStorage from '@ohos.data.storage'
  import featureAbility from '@ohos.ability.featureAbility'
Z
zengyawen 已提交
84
  
85
  var context = featureAbility.getContext()
86
  context.getFilesDir((err, path) => {
87
      if (err) {
88
          console.error('getFilesDir failed. err: ' + JSON.stringify(err));
89 90
          return;
      }
P
PaDoBoo 已提交
91
      console.info('getFilesDir successful. path:' + JSON.stringify(path));
92 93 94 95 96 97 98 99 100
      dataStorage.getStorage(path + '/mystore', function (err, storage) {
          if (err) {
              console.info("Get the storage failed, path: " + path + '/mystore')
              return;
          }
          storage.putSync('startup', 'auto')
          storage.flushSync()
      })
  });
Z
zengyawen 已提交
101 102 103
  ```


104
## dataStorage.getStorage
Z
zengyawen 已提交
105 106

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

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

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

G
ge-yafang 已提交
112
**参数:**
Z
zengyawen 已提交
113 114 115 116
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

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

G
ge-yafang 已提交
122
**示例:**
G
ge-yafang 已提交
123
  ```js
Z
zengyawen 已提交
124 125
  import dataStorage from '@ohos.data.storage'
  import featureAbility from '@ohos.ability.featureAbility'
Z
zengyawen 已提交
126
  
127
  var context = featureAbility.getContext()
128
  context.getFilesDir((err, path) => {
P
PaDoBoo 已提交
129 130 131 132 133
      if (err) {
          console.info("Get the storage failed, path: " + path + '/mystore')
          return;
      }
      console.info('getFilesDir successful. path:' + JSON.stringify(path));
134 135 136 137 138 139 140 141
      let promisegetSt = dataStorage.getStorage(path + '/mystore')
      promisegetSt.then((storage) => {
          storage.putSync('startup', 'auto')
          storage.flushSync()
      }).catch((err) => {
          console.info("Get the storage failed, path: " + path + '/mystore')
      })
  });
Z
zengyawen 已提交
142 143 144
  ```


145
## dataStorage.deleteStorageSync
Z
zengyawen 已提交
146 147

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

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

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

G
ge-yafang 已提交
153
**参数:**
Z
zengyawen 已提交
154 155 156 157
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
158
**示例:**
G
ge-yafang 已提交
159
  ```js
Z
zengyawen 已提交
160 161 162 163
  dataStorage.deleteStorageSync(path + '/mystore')
  ```


164
## dataStorage.deleteStorage
Z
zengyawen 已提交
165

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

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

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

G
ge-yafang 已提交
172
**参数:**
Z
zengyawen 已提交
173 174 175 176 177
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |

G
ge-yafang 已提交
178
**示例:**
G
ge-yafang 已提交
179
  ```js
Z
zengyawen 已提交
180 181 182 183 184 185 186 187 188 189
  dataStorage.deleteStorage(path + '/mystore', function (err) {
      if (err) {
          console.info("Deleted failed with err: " + err)
          return
      }
      console.info("Deleted successfully.")
  })
  ```


190
## dataStorage.deleteStorage
Z
zengyawen 已提交
191 192

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

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

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

G
ge-yafang 已提交
198
**参数:**
Z
zengyawen 已提交
199 200 201 202
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
203
**返回值:**
Z
zengyawen 已提交
204 205 206 207
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步获取结果。 |

G
ge-yafang 已提交
208
**示例:**
G
ge-yafang 已提交
209
  ```js
210 211
  let promisedelSt = dataStorage.deleteStorage(path + '/mystore')
  promisedelSt.then(() => {
Z
zengyawen 已提交
212 213 214 215 216 217 218
      console.info("Deleted successfully.")
  }).catch((err) => {
      console.info("Deleted failed with err: " + err)
  })
  ```


219
## dataStorage.removeStorageFromCacheSync
Z
zengyawen 已提交
220 221

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

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

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

G
ge-yafang 已提交
227
**参数:**
Z
zengyawen 已提交
228 229 230 231
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
232
**示例:**
G
ge-yafang 已提交
233
  ```js
Z
zengyawen 已提交
234 235 236 237
  dataStorage.removeStorageFromCacheSync(path + '/mystore')
  ```


238
## dataStorage.removeStorageFromCache
Z
zengyawen 已提交
239

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

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

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

G
ge-yafang 已提交
246
**参数:**
Z
zengyawen 已提交
247 248 249
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |
250
  | callback | AsyncCallback<void> | 是 | 回调函数。 |
Z
zengyawen 已提交
251

G
ge-yafang 已提交
252
**示例:**
G
ge-yafang 已提交
253
  ```js
Z
zengyawen 已提交
254 255 256 257 258 259 260 261 262 263
  dataStorage.removeStorageFromCache(path + '/mystore', function (err) {
      if (err) {
          console.info("Removed storage from cache failed with err: " + err)
          return
      }
      console.info("Removed storage from cache successfully.")
  })
  ```


264
## dataStorage.removeStorageFromCache
Z
zengyawen 已提交
265 266

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

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

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

G
ge-yafang 已提交
272
**参数:**
Z
zengyawen 已提交
273 274 275 276
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | path | string | 是 | 应用程序内部数据存储路径。 |

G
ge-yafang 已提交
277
**返回值:**
Z
zengyawen 已提交
278 279 280 281
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步获取结果。 |

G
ge-yafang 已提交
282
**示例:**
G
ge-yafang 已提交
283
  ```js
284 285
  let promiserevSt = dataStorage.removeStorageFromCache(path + '/mystore')
  promiserevSt.then(() => {
Z
zengyawen 已提交
286 287 288 289 290 291 292
      console.info("Removed storage from cache successfully.")
  }).catch((err) => {
      console.info("Removed storage from cache failed with err: " + err)
  })
  ```


293
## Storage
Z
zengyawen 已提交
294

Z
zengyawen 已提交
295
提供获取和修改存储数据的接口。
Z
zengyawen 已提交
296 297


298
### getSync
Z
zengyawen 已提交
299 300

getSync(key: string, defValue: ValueType): ValueType
Z
zengyawen 已提交
301 302

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

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

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

G
ge-yafang 已提交
312
**返回值:**
Z
zengyawen 已提交
313 314 315 316
  | 类型 | 说明 |
  | -------- | -------- |
  | ValueType | 键对应的值,如果值为null或者非默认值类型,返回默认数据。 |

G
ge-yafang 已提交
317
**示例:**
G
ge-yafang 已提交
318
  ```js
Z
zengyawen 已提交
319 320 321 322 323
  let value = storage.getSync('startup', 'default')
  console.info("The value of startup is " + value)
  ```


324
### get
Z
zengyawen 已提交
325 326

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

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

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

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

G
ge-yafang 已提交
339
**示例:**
G
ge-yafang 已提交
340
  ```js
Z
zengyawen 已提交
341 342 343 344 345 346 347 348 349 350
  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)
  })
  ```


351
### get
Z
zengyawen 已提交
352 353

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

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

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

G
ge-yafang 已提交
359 360 361 362 363 364
**参数:**

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

G
ge-yafang 已提交
366
**返回值:**
Z
zengyawen 已提交
367 368 369 370
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<ValueType> | Promise实例,用于异步获取结果。 |

G
ge-yafang 已提交
371
**示例:**
G
ge-yafang 已提交
372
  ```js
373 374
  let promiseget = storage.get('startup', 'default')
  promiseget.then((value) => {
Z
zengyawen 已提交
375 376 377 378 379 380 381
      console.info("The value of startup is " + value)
  }).catch((err) => {
      console.info("Get the value of startup failed with err: " + err)
  })
  ```


382
### putSync
Z
zengyawen 已提交
383 384

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

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

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

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

G
ge-yafang 已提交
396
**示例:**
G
ge-yafang 已提交
397
  ```js
Z
zengyawen 已提交
398 399 400 401
  storage.putSync('startup', 'auto')
  ```


402
### put
Z
zengyawen 已提交
403 404

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

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

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

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

G
ge-yafang 已提交
417
**示例:**
G
ge-yafang 已提交
418
  ```js
Z
zengyawen 已提交
419 420 421 422 423 424 425 426 427 428
  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.")
  })
  ```


429
### put
Z
zengyawen 已提交
430 431

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

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

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

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

G
ge-yafang 已提交
443
**返回值:**
Z
zengyawen 已提交
444 445 446 447
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
448
**示例:**
G
ge-yafang 已提交
449
  ```js
450 451
  let promiseput = storage.put('startup', 'auto')
  promiseput.then(() => {
Z
zengyawen 已提交
452 453 454 455 456 457 458
      console.info("Put the value of startup successfully.")
  }).catch((err) => {
      console.info("Put the value of startup failed with err: " + err)
  })
  ```


459
### hasSync
Z
zengyawen 已提交
460 461

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

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

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

G
ge-yafang 已提交
467
**参数:**
Z
zengyawen 已提交
468 469
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
470
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
Z
zengyawen 已提交
471

G
ge-yafang 已提交
472
**返回值:**
Z
zengyawen 已提交
473 474 475 476
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | true 表示存在,false表示不存在。 |

G
ge-yafang 已提交
477
**示例:**
G
ge-yafang 已提交
478
  ```js
Z
zengyawen 已提交
479 480 481 482 483 484 485
  let isExist = storage.hasSync('startup')
  if (isExist) {
      console.info("The key of startup is contained.")
  }
  ```


486
### has
Z
zengyawen 已提交
487 488

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

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

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

G
ge-yafang 已提交
494
**参数:**
Z
zengyawen 已提交
495 496 497 498 499
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
  | callback | AsyncCallback<boolean> | 是 | 回调函数。 |

G
ge-yafang 已提交
500
**返回值:**
Z
zengyawen 已提交
501 502 503 504
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | true表示存在,false表示不存在。 |

G
ge-yafang 已提交
505
**示例:**
G
ge-yafang 已提交
506
  ```js
Z
zengyawen 已提交
507 508 509 510 511 512 513 514 515 516 517 518
  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.")
      }
  })
  ```


519
### has
Z
zengyawen 已提交
520 521

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

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

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

G
ge-yafang 已提交
527
**参数:**
Z
zengyawen 已提交
528 529
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
ge-yafang 已提交
530
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
Z
zengyawen 已提交
531

G
ge-yafang 已提交
532
**返回值:**
Z
zengyawen 已提交
533 534 535 536
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<boolean> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
537
**示例:**
G
ge-yafang 已提交
538
  ```js
539 540
  let promisehas = storage.has('startup')
  promisehas.then((isExist) => {
Z
zengyawen 已提交
541 542 543 544 545 546 547 548 549
      if (isExist) {
          console.info("The key of startup is contained.")
      }
  }).catch((err) => {
      console.info("Check the key of startup failed with err: " + err)
  })
  ```


550
### deleteSync
Z
zengyawen 已提交
551 552

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

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

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

G
ge-yafang 已提交
558
**参数:**
Z
zengyawen 已提交
559 560 561 562
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称。它不能为空。 |

G
ge-yafang 已提交
563
**示例:**
G
ge-yafang 已提交
564
  ```js
Z
zengyawen 已提交
565 566 567 568
  storage.deleteSync('startup')
  ```


G
ge-yafang 已提交
569
### delete
Z
zengyawen 已提交
570 571

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

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

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

G
ge-yafang 已提交
577
**参数:**
Z
zengyawen 已提交
578 579 580 581 582
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称,不能为空。 |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |

G
ge-yafang 已提交
583
**示例:**
G
ge-yafang 已提交
584
  ```js
Z
zengyawen 已提交
585 586 587 588 589 590 591 592 593 594
  storage.delete('startup', function (err) {
      if (err) {
          console.info("Delete startup key failed with err: " + err)
          return
      }
      console.info("Deleted startup key successfully.")
  })
  ```


595
### delete
Z
zengyawen 已提交
596 597

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

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

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

G
ge-yafang 已提交
603
**参数:**
Z
zengyawen 已提交
604 605 606 607
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要获取的存储key名称。 |

G
ge-yafang 已提交
608
**返回值:**
Z
zengyawen 已提交
609 610 611 612
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
613
**示例:**
G
ge-yafang 已提交
614
  ```js
615 616
  let promisedel = storage.delete('startup')
  promisedel.then(() => {
Z
zengyawen 已提交
617 618 619 620 621 622 623
      console.info("Deleted startup key successfully.")
  }).catch((err) => {
      console.info("Delete startup key failed with err: " + err)
  })
  ```


624
### flushSync
Z
zengyawen 已提交
625 626

flushSync(): void
Z
zengyawen 已提交
627

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

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

G
ge-yafang 已提交
632
**示例:**
G
ge-yafang 已提交
633
  ```js
Z
zengyawen 已提交
634 635
  storage.flushSync()
  ```
Z
zengyawen 已提交
636 637


638
### flush
Z
zengyawen 已提交
639

Z
zengyawen 已提交
640
flush(callback: AsyncCallback<void>): void
Z
zengyawen 已提交
641

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

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

G
ge-yafang 已提交
646
**参数:**
Z
zengyawen 已提交
647 648 649
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |
Z
zengyawen 已提交
650

G
ge-yafang 已提交
651
**示例:**
G
ge-yafang 已提交
652
  ```js
Z
zengyawen 已提交
653 654 655 656 657 658 659 660
  storage.flush(function (err) {
      if (err) {
          console.info("Flush to file failed with err: " + err)
          return
      }
      console.info("Flushed to file successfully.")
  })
  ```
Z
zengyawen 已提交
661 662


663
### flush
Z
zengyawen 已提交
664

Z
zengyawen 已提交
665
flush(): Promise<void>
Z
zengyawen 已提交
666

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

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

G
ge-yafang 已提交
671
**返回值:**
Z
zengyawen 已提交
672 673 674
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |
Z
zengyawen 已提交
675

G
ge-yafang 已提交
676
**示例:**
G
ge-yafang 已提交
677
  ```js
678 679
  let promiseflush = storage.flush()
  promiseflush.then(() => {
Z
zengyawen 已提交
680 681 682 683 684
      console.info("Flushed to file successfully.")
  }).catch((err) => {
      console.info("Flush to file failed with err: " + err)
  })
  ```
Z
zengyawen 已提交
685

Z
zengyawen 已提交
686

687
### clearSync
Z
zengyawen 已提交
688 689

clearSync(): void
Z
zengyawen 已提交
690 691 692

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

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

G
ge-yafang 已提交
695
**示例:**
G
ge-yafang 已提交
696
  ```js
Z
zengyawen 已提交
697 698
  storage.clearSync()
  ```
Z
zengyawen 已提交
699 700


701
### clear
Z
zengyawen 已提交
702

Z
zengyawen 已提交
703
clear(callback: AsyncCallback<void>): void
Z
zengyawen 已提交
704

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

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

G
ge-yafang 已提交
709
**参数:**
Z
zengyawen 已提交
710 711 712 713
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | callback | AsyncCallback<void> | 是 | 回调函数。 |

G
ge-yafang 已提交
714
**示例:**
G
ge-yafang 已提交
715
  ```js
Z
zengyawen 已提交
716 717 718 719 720 721 722 723 724 725
  storage.clear(function (err) {
      if (err) {
          console.info("Clear to file failed with err: " + err)
          return
      }
      console.info("Cleared to file successfully.")
  })
  ```


726
### clear
Z
zengyawen 已提交
727 728

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

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

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

G
ge-yafang 已提交
734
**返回值:**
Z
zengyawen 已提交
735 736 737 738
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<void> | Promise实例,用于异步处理。 |

G
ge-yafang 已提交
739
**示例:**
G
ge-yafang 已提交
740
  ```js
741 742
  let promiseclear = storage.clear()
  promiseclear.then(() => {
Z
zengyawen 已提交
743 744 745 746 747 748 749
      console.info("Cleared to file successfully.")
  }).catch((err) => {
      console.info("Clear to file failed with err: " + err)
  })
  ```


750
### on('change')
Z
zengyawen 已提交
751 752 753 754 755

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

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

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

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

G
ge-yafang 已提交
764
**示例:**
G
ge-yafang 已提交
765
  ```js
Z
zengyawen 已提交
766 767 768 769 770 771 772 773 774
  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.
  ```


775
### off('change')
Z
zengyawen 已提交
776 777 778 779 780

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

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

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

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

G
ge-yafang 已提交
789
**示例:**
G
ge-yafang 已提交
790
  ```js
Z
zengyawen 已提交
791 792 793 794 795 796 797
  var observer = function (key) {
      console.info("The key of " + key + " changed.")
  }
  storage.off('change', observer)
  ```


798 799
## StorageObserver

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

Z
zengyawen 已提交
802 803 804
| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | string | 否 | 变更的数据内容。 |
G
ge-yafang 已提交
805 806 807 808 809

## ValueType

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

G
ge-yafang 已提交
810
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
G
ge-yafang 已提交
811 812 813 814 815 816

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