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

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


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


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

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

G
ge-yafang 已提交
21
## 常量
Z
zengyawen 已提交
22

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

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


31
## data_storage.getStorageSync
Z
zengyawen 已提交
32 33

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

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

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

G
ge-yafang 已提交
39
**参数:**
40 41 42 43

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| path   | string | 是   | 应用程序内部数据存储路径。 |
Z
zengyawen 已提交
44

G
ge-yafang 已提交
45
**返回值:**
46 47 48 49

| 类型                | 说明                                              |
| ------------------- | ------------------------------------------------- |
| [Storage](#storage) | 获取到要操作的Storage实例,用于进行数据存储操作。 |
Z
zengyawen 已提交
50

G
ge-yafang 已提交
51
**示例:**
52 53 54 55

```js
import featureAbility from '@ohos.ability.featureAbility';

56 57
let path;
let context = featureAbility.getContext();
58
context.getFilesDir().then((filePath) => {
59
  path = filePath;
60
  console.info("======================>getFilesDirPromise====================>");
61

62 63 64 65
  let storage = data_storage.getStorageSync(path + '/mystore');
  storage.putSync('startup', 'auto');
  storage.flushSync();
});
66
```
Z
zengyawen 已提交
67 68


69
## data_storage.getStorage
Z
zengyawen 已提交
70 71

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

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

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

G
ge-yafang 已提交
77
**参数:**
78 79 80 81 82

| 参数名   | 类型                                     | 必填 | 说明                       |
| -------- | ---------------------------------------- | ---- | -------------------------- |
| path     | string                                   | 是   | 应用程序内部数据存储路径。 |
| callback | AsyncCallback<[Storage](#storage)> | 是   | 回调函数。                 |
Z
zengyawen 已提交
83

G
ge-yafang 已提交
84
**示例:**
85 86 87 88

```js
import featureAbility from '@ohos.ability.featureAbility';

89 90
let path;
let context = featureAbility.getContext();
91
context.getFilesDir().then((filePath) => {
92
  path = filePath;
93
  console.info("======================>getFilesDirPromise====================>");
94

95
  data_storage.getStorage(path + '/mystore', function (err, storage) {
96
    if (err) {
97 98
      console.info("Failed to get the storage. path: " + path + '/mystore');
      return;
99 100 101
    }
    storage.putSync('startup', 'auto');
    storage.flushSync();
102 103
  })
});
104
```
Z
zengyawen 已提交
105 106


107
## data_storage.getStorage
Z
zengyawen 已提交
108 109

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

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

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

G
ge-yafang 已提交
115
**参数:**
116 117 118 119

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| path   | string | 是   | 应用程序内部数据存储路径。 |
Z
zengyawen 已提交
120

G
ge-yafang 已提交
121
**返回值:**
122 123 124 125

| 类型                               | 说明                            |
| ---------------------------------- | ------------------------------- |
| Promise<[Storage](#storage)> | Promise实例,用于异步获取结果。 |
Z
zengyawen 已提交
126

G
ge-yafang 已提交
127
**示例:**
128 129 130 131

```js
import featureAbility from '@ohos.ability.featureAbility';

132 133
let path;
let context = featureAbility.getContext();
134
context.getFilesDir().then((filePath) => {
135
  path = filePath;
136
  console.info("======================>getFilesDirPromise====================>");
137

138 139
  let getPromise = data_storage.getStorage(path + '/mystore');
  getPromise.then((storage) => {
140 141
    storage.putSync('startup', 'auto');
    storage.flushSync();
142
  }).catch((err) => {
143
    console.info("Failed to get the storage. path: " + path + '/mystore');
144 145
  })
});
146
```
Z
zengyawen 已提交
147 148


149
## data_storage.deleteStorageSync
Z
zengyawen 已提交
150 151

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

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

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

G
ge-yafang 已提交
157
**参数:**
158 159 160 161

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| path   | string | 是   | 应用程序内部数据存储路径。 |
Z
zengyawen 已提交
162

G
ge-yafang 已提交
163
**示例:**
164 165 166 167

```js
import featureAbility from '@ohos.ability.featureAbility';

168 169
let path;
let context = featureAbility.getContext();
170 171
context.getFilesDir().then((filePath) => {
    path = filePath;
172
    console.info("======================>getFilesDirPromise====================>");
173

174 175
    data_storage.deleteStorageSync(path + '/mystore');
});  
176
```
Z
zengyawen 已提交
177

178
## data_storage.deleteStorage
Z
zengyawen 已提交
179

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

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

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

G
ge-yafang 已提交
186
**参数:**
187 188 189 190 191

| 参数名   | 类型                      | 必填 | 说明                       |
| -------- | ------------------------- | ---- | -------------------------- |
| path     | string                    | 是   | 应用程序内部数据存储路径。 |
| callback | AsyncCallback<void> | 是   | 回调函数。                 |
Z
zengyawen 已提交
192

G
ge-yafang 已提交
193
**示例:**
194 195 196 197

```js
import featureAbility from '@ohos.ability.featureAbility';

198 199
let path;
let context = featureAbility.getContext();
200
context.getFilesDir().then((filePath) => {
201
  path = filePath;
202
  console.info("======================>getFilesDirPromise====================>");
203

204
  data_storage.deleteStorage(path + '/mystore', function (err) {
205
    if (err) {
206 207
      console.info("Failed to delete the storage with err: " + err);
      return;
208 209
    }
    console.info("Succeeded in deleting the storage.");
210 211
  })
});
212
```
Z
zengyawen 已提交
213 214


215
## data_storage.deleteStorage
Z
zengyawen 已提交
216 217

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

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

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

G
ge-yafang 已提交
223
**参数:**
224 225 226 227

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| path   | string | 是   | 应用程序内部数据存储路径。 |
Z
zengyawen 已提交
228

G
ge-yafang 已提交
229
**返回值:**
230 231 232 233

| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise<void> | Promise实例,用于异步获取结果。 |
Z
zengyawen 已提交
234

G
ge-yafang 已提交
235
**示例:**
236 237 238 239

```js
import featureAbility from '@ohos.ability.featureAbility';

240 241
let path;
let context = featureAbility.getContext();
242
context.getFilesDir().then((filePath) => {
243
  path = filePath;
244
  console.info("======================>getFilesDirPromise====================>");
245

246 247
  let promisedelSt = data_storage.deleteStorage(path + '/mystore');
  promisedelSt.then(() => {
248
    console.info("Succeeded in deleting the storage.");
249
  }).catch((err) => {
250
    console.info("Failed to delete the storage with err: " + err);
251 252
  })
});
253
```
Z
zengyawen 已提交
254 255


256
## data_storage.removeStorageFromCacheSync
Z
zengyawen 已提交
257 258

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

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

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

G
ge-yafang 已提交
264
**参数:**
265 266 267
| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| path   | string | 是   | 应用程序内部数据存储路径。 |
Z
zengyawen 已提交
268

G
ge-yafang 已提交
269
**示例:**
270 271 272 273

```js
import featureAbility from '@ohos.ability.featureAbility';

274 275
let path;
let context = featureAbility.getContext();
276 277
context.getFilesDir().then((filePath) => {
    path = filePath;
278
    console.info("======================>getFilesDirPromise====================>");
279 280
    
    data_storage.removeStorageFromCacheSync(path + '/mystore');
281 282
});  
```
Z
zengyawen 已提交
283 284


285
## data_storage.removeStorageFromCache
Z
zengyawen 已提交
286

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

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

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

G
ge-yafang 已提交
293
**参数:**
294 295 296 297 298

| 参数名   | 类型                      | 必填 | 说明                       |
| -------- | ------------------------- | ---- | -------------------------- |
| path     | string                    | 是   | 应用程序内部数据存储路径。 |
| callback | AsyncCallback<void> | 是   | 回调函数。                 |
Z
zengyawen 已提交
299

G
ge-yafang 已提交
300
**示例:**
301 302 303 304

```js
import featureAbility from '@ohos.ability.featureAbility';

305 306
let path;
let context = featureAbility.getContext();
307
context.getFilesDir().then((filePath) => {
308
  path = filePath;
309
  console.info("======================>getFilesDirPromise====================>");
310

311
  data_storage.removeStorageFromCache(path + '/mystore', function (err) {
312
    if (err) {
313 314
      console.info("Failed to remove storage from cache with err: " + err);
      return;
315 316
    }
    console.info("Succeeded in removing storage from cache.");
317 318
  })
});
319
```
Z
zengyawen 已提交
320 321


322
## data_storage.removeStorageFromCache
Z
zengyawen 已提交
323 324

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

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

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

G
ge-yafang 已提交
330
**参数:**
331 332 333 334

| 参数名 | 类型   | 必填 | 说明                       |
| ------ | ------ | ---- | -------------------------- |
| path   | string | 是   | 应用程序内部数据存储路径。 |
Z
zengyawen 已提交
335

G
ge-yafang 已提交
336
**返回值:**
337 338 339 340

| 类型                | 说明                            |
| ------------------- | ------------------------------- |
| Promise<void> | Promise实例,用于异步获取结果。 |
Z
zengyawen 已提交
341

G
ge-yafang 已提交
342
**示例:**
343 344 345 346

```js
import featureAbility from '@ohos.ability.featureAbility';

347 348
let path;
let context = featureAbility.getContext();
349
context.getFilesDir().then((filePath) => {
350
  path = filePath;
351
  console.info("======================>getFilesDirPromise====================>");
352

353 354
  let promiserevSt = data_storage.removeStorageFromCache(path + '/mystore')
  promiserevSt.then(() => {
355
    console.info("Succeeded in removing storage from cache.");
356
  }).catch((err) => {
357
    console.info("Failed to remove storage from cache with err: " + err);
358 359
  })
});
360
```
Z
zengyawen 已提交
361

362
## Storage
Z
zengyawen 已提交
363

Z
zengyawen 已提交
364
提供获取和修改存储数据的接口。
Z
zengyawen 已提交
365

366
### getSync
Z
zengyawen 已提交
367 368

getSync(key: string, defValue: ValueType): ValueType
Z
zengyawen 已提交
369 370

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

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

G
ge-yafang 已提交
374
**参数:**
375 376 377 378 379

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

G
ge-yafang 已提交
381
**返回值:**
382 383 384 385

| 类型      | 说明                                                     |
| --------- | -------------------------------------------------------- |
| ValueType | 键对应的值,如果值为null或者非默认值类型,返回默认数据。 |
Z
zengyawen 已提交
386

G
ge-yafang 已提交
387
**示例:**
388 389 390 391 392

```js
let value = storage.getSync('startup', 'default');
console.info("The value of startup is " + value);
```
Z
zengyawen 已提交
393 394


395
### get
Z
zengyawen 已提交
396 397

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

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

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

G
ge-yafang 已提交
403
**参数:**
404 405 406 407 408 409

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

G
ge-yafang 已提交
411
**示例:**
412 413 414 415 416 417

```js
storage.get('startup', 'default', function(err, value) {
    if (err) {
        console.info("Failed to get the value of startup with err: " + err);
        return;
Z
zengyawen 已提交
418
      }
419 420 421
    console.info("The value of startup is " + value);
})
```
Z
zengyawen 已提交
422 423


424
### get
Z
zengyawen 已提交
425 426

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

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

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

G
ge-yafang 已提交
432 433
**参数:**

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

G
ge-yafang 已提交
439
**返回值:**
440 441 442 443

| 类型                     | 说明                            |
| ------------------------ | ------------------------------- |
| Promise<ValueType> | Promise实例,用于异步获取结果。 |
Z
zengyawen 已提交
444

G
ge-yafang 已提交
445
**示例:**
446 447 448 449 450 451 452 453 454

```js
let promiseget = storage.get('startup', 'default');
promiseget.then((value) => {
    console.info("The value of startup is " + value)
}).catch((err) => {
    console.info("Failed to get the value of startup with err: " + err);
})
```
Z
zengyawen 已提交
455 456


457
### putSync
Z
zengyawen 已提交
458 459

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

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

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

G
ge-yafang 已提交
465
**参数:**
466 467 468 469 470

| 参数名 | 类型                    | 必填 | 说明                                      |
| ------ | ----------------------- | ---- | ----------------------------------------- |
| key    | string                  | 是   | 要修改的存储的key,不能为空。             |
| value  | [ValueType](#valuetype) | 是   | 存储的新值。支持number、string、boolean。 |
Z
zengyawen 已提交
471

G
ge-yafang 已提交
472
**示例:**
473 474 475 476

```js
storage.putSync('startup', 'auto');
```
Z
zengyawen 已提交
477 478


479
### put
Z
zengyawen 已提交
480 481

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

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

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

G
ge-yafang 已提交
487
**参数:**
488 489 490 491 492 493

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

G
ge-yafang 已提交
495
**示例:**
496 497 498 499 500 501 502 503 504 505

```js
storage.put('startup', 'auto', function (err) {
    if (err) {
        console.info("Failed to put the value of startup with err: " + err);
        return;
    }
    console.info("Succeeded in putting the value of startup.");
})
```
Z
zengyawen 已提交
506 507


508
### put
Z
zengyawen 已提交
509 510

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

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

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

G
ge-yafang 已提交
516
**参数:**
517 518 519 520 521

| 参数名 | 类型                    | 必填 | 说明                                      |
| ------ | ----------------------- | ---- | ----------------------------------------- |
| key    | string                  | 是   | 要修改的存储的key,不能为空。             |
| value  | [ValueType](#valuetype) | 是   | 存储的新值。支持number、string、boolean。 |
Z
zengyawen 已提交
522

G
ge-yafang 已提交
523
**返回值:**
524 525 526 527

| 类型                | 说明                        |
| ------------------- | --------------------------- |
| Promise<void> | Promise实例,用于异步处理。 |
Z
zengyawen 已提交
528

G
ge-yafang 已提交
529
**示例:**
530 531 532 533 534 535 536 537 538

```js
let promiseput = storage.put('startup', 'auto');
promiseput.then(() => {
    console.info("Succeeded in putting the value of startup.");
}).catch((err) => {
    console.info("Failed to put the value of startup with err: " + err);
})
```
Z
zengyawen 已提交
539 540


541
### hasSync
Z
zengyawen 已提交
542 543

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

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

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

G
ge-yafang 已提交
549
**参数:**
550 551 552 553

| 参数名 | 类型   | 必填 | 说明                            |
| ------ | ------ | ---- | ------------------------------- |
| key    | string | 是   | 要获取的存储key名称,不能为空。 |
Z
zengyawen 已提交
554

G
ge-yafang 已提交
555
**返回值:**
556 557 558 559

| 类型    | 说明                                  |
| ------- | ------------------------------------- |
| boolean | true 表示存在,false表示不存在。 |
Z
zengyawen 已提交
560

G
ge-yafang 已提交
561
**示例:**
562 563 564 565 566 567 568

```js
let isExist = storage.hasSync('startup');
if (isExist) {
    console.info("The key of startup is contained.");
}
```
Z
zengyawen 已提交
569 570


571
### has
Z
zengyawen 已提交
572 573

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

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

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

G
ge-yafang 已提交
579
**参数:**
580 581 582 583 584

| 参数名   | 类型                         | 必填 | 说明                            |
| -------- | ---------------------------- | ---- | ------------------------------- |
| key      | string                       | 是   | 要获取的存储key名称,不能为空。 |
| callback | AsyncCallback<boolean> | 是   | 回调函数。                      |
Z
zengyawen 已提交
585

G
ge-yafang 已提交
586
**返回值:**
587 588 589 590

| 类型    | 说明                            |
| ------- | ------------------------------- |
| boolean | true表示存在,false表示不存在。 |
Z
zengyawen 已提交
591

G
ge-yafang 已提交
592
**示例:**
593 594 595 596 597 598 599 600 601 602 603 604

```js
storage.has('startup', function (err, isExist) {
    if (err) {
        console.info("Failed to check the key of startup with err: " + err);
        return;
    }
    if (isExist) {
        console.info("The key of startup is contained.");
    }
})
```
Z
zengyawen 已提交
605 606


607
### has
Z
zengyawen 已提交
608 609

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

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

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

G
ge-yafang 已提交
615
**参数:**
616 617 618 619

| 参数名 | 类型   | 必填 | 说明                            |
| ------ | ------ | ---- | ------------------------------- |
| key    | string | 是   | 要获取的存储key名称,不能为空。 |
Z
zengyawen 已提交
620

G
ge-yafang 已提交
621
**返回值:**
622 623 624 625

| 类型                   | 说明                        |
| ---------------------- | --------------------------- |
| Promise<boolean> | Promise实例,用于异步处理。 |
Z
zengyawen 已提交
626

G
ge-yafang 已提交
627
**示例:**
628 629 630 631 632 633 634 635 636 637 638

```js
let promisehas = storage.has('startup')
promisehas.then((isExist) => {
    if (isExist) {
        console.info("The key of startup is contained.");
    }
}).catch((err) => {
    console.info("Failed to check the key of startup with err: " + err);
})
```
Z
zengyawen 已提交
639 640


641
### deleteSync
Z
zengyawen 已提交
642 643

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

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

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

G
ge-yafang 已提交
649
**参数:**
650 651 652 653

| 参数名 | 类型   | 必填 | 说明                              |
| ------ | ------ | ---- | --------------------------------- |
| key    | string | 是   | 要获取的存储key名称。它不能为空。 |
Z
zengyawen 已提交
654

G
ge-yafang 已提交
655
**示例:**
656 657 658 659

```js
 storage.deleteSync('startup');
```
Z
zengyawen 已提交
660 661


G
ge-yafang 已提交
662
### delete
Z
zengyawen 已提交
663 664

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

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

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

G
ge-yafang 已提交
670
**参数:**
671 672 673 674 675

| 参数名   | 类型                      | 必填 | 说明                            |
| -------- | ------------------------- | ---- | ------------------------------- |
| key      | string                    | 是   | 要获取的存储key名称,不能为空。 |
| callback | AsyncCallback<void> | 是   | 回调函数。                      |
Z
zengyawen 已提交
676

G
ge-yafang 已提交
677
**示例:**
678 679 680 681 682 683 684 685 686 687

```js
storage.delete('startup', function (err) {
    if (err) {
        console.info("Failed to delete startup key failed err: " + err);
        return;
    }
    console.info("Succeeded in deleting startup key.");
})
```
Z
zengyawen 已提交
688 689


690
### delete
Z
zengyawen 已提交
691 692

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

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

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

G
ge-yafang 已提交
698
**参数:**
699 700 701 702

| 参数名 | 类型   | 必填 | 说明                  |
| ------ | ------ | ---- | --------------------- |
| key    | string | 是   | 要获取的存储key名称。 |
Z
zengyawen 已提交
703

G
ge-yafang 已提交
704
**返回值:**
705 706 707 708

| 类型                | 说明                        |
| ------------------- | --------------------------- |
| Promise<void> | Promise实例,用于异步处理。 |
Z
zengyawen 已提交
709

G
ge-yafang 已提交
710
**示例:**
711 712 713 714 715 716 717 718 719

```js
let promisedel = storage.delete('startup')
promisedel.then(() => {
    console.info("Succeeded in deleting startup key.");
}).catch((err) => {
    console.info("Failed to delete startup key failed err: " + err);
})
```
Z
zengyawen 已提交
720 721


722
### flushSync
Z
zengyawen 已提交
723 724

flushSync(): void
Z
zengyawen 已提交
725

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

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

G
ge-yafang 已提交
730
**示例:**
731 732 733 734

```js
storage.flushSync();
```
Z
zengyawen 已提交
735 736


737
### flush
Z
zengyawen 已提交
738

Z
zengyawen 已提交
739
flush(callback: AsyncCallback<void>): void
Z
zengyawen 已提交
740

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

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

G
ge-yafang 已提交
745
**参数:**
746 747 748 749

| 参数名   | 类型                      | 必填 | 说明       |
| -------- | ------------------------- | ---- | ---------- |
| callback | AsyncCallback<void> | 是   | 回调函数。 |
Z
zengyawen 已提交
750

G
ge-yafang 已提交
751
**示例:**
752 753 754 755 756 757 758 759 760 761

```js
storage.flush(function (err) {
    if (err) {
        console.info("Failed to flush to file with err: " + err);
        return;
    }
    console.info("Succeeded in flushing to file.");
})
```
Z
zengyawen 已提交
762 763


764
### flush
Z
zengyawen 已提交
765

Z
zengyawen 已提交
766
flush(): Promise<void>
Z
zengyawen 已提交
767

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

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

G
ge-yafang 已提交
772
**返回值:**
773 774 775 776

| 类型                | 说明                        |
| ------------------- | --------------------------- |
| Promise<void> | Promise实例,用于异步处理。 |
Z
zengyawen 已提交
777

G
ge-yafang 已提交
778
**示例:**
779 780 781 782 783 784 785 786 787

```js
let promiseflush = storage.flush();
promiseflush.then(() => {
    console.info("Succeeded in flushing to file.");
}).catch((err) => {
    console.info("Failed to flush to file with err: " + err);
})
```
Z
zengyawen 已提交
788

Z
zengyawen 已提交
789

790
### clearSync
Z
zengyawen 已提交
791 792

clearSync(): void
Z
zengyawen 已提交
793 794 795

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

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

G
ge-yafang 已提交
798
**示例:**
799 800 801 802

```js
storage.clearSync();
```
Z
zengyawen 已提交
803 804


805
### clear
Z
zengyawen 已提交
806

Z
zengyawen 已提交
807
clear(callback: AsyncCallback<void>): void
Z
zengyawen 已提交
808

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

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

G
ge-yafang 已提交
813
**参数:**
814 815 816 817

| 参数名   | 类型                      | 必填 | 说明       |
| -------- | ------------------------- | ---- | ---------- |
| callback | AsyncCallback<void> | 是   | 回调函数。 |
Z
zengyawen 已提交
818

G
ge-yafang 已提交
819
**示例:**
820 821 822 823 824 825 826 827 828 829

```js
storage.clear(function (err) {
    if (err) {
        console.info("Failed to clear the storage with err: " + err);
        return;
    }
    console.info("Succeeded in clearing the storage.");
})
```
Z
zengyawen 已提交
830 831


832
### clear
Z
zengyawen 已提交
833 834

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

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

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

G
ge-yafang 已提交
840
**返回值:**
841 842 843
| 类型                | 说明                        |
| ------------------- | --------------------------- |
| Promise<void> | Promise实例,用于异步处理。 |
Z
zengyawen 已提交
844

G
ge-yafang 已提交
845
**示例:**
846 847 848 849 850 851 852 853 854

```js
let promiseclear = storage.clear();
promiseclear.then(() => {
    console.info("Succeeded in clearing the storage.");
}).catch((err) => {
    console.info("Failed to clear the storage with err: " + err);
})
```
Z
zengyawen 已提交
855 856


857
### on('change')
Z
zengyawen 已提交
858 859 860 861 862

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

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

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

G
ge-yafang 已提交
865
**参数:**
866

867 868 869 870
| 参数名   | 类型                                                |  必填| 说明                                     |
| -------- | --------------------------------------------------- | ------ |---------------------------------------- |
| type     | string                                              |是| 事件类型,固定值'change',表示数据变更。 |
| callback | Callback<[StorageObserver](#storageobserver)> | 是|回调对象实例。                           |
Z
zengyawen 已提交
871

G
ge-yafang 已提交
872
**示例:**
873 874

```js
875
let observer = function (key) {
876 877 878 879 880 881
    console.info("The key of " + key + " changed.");
}
storage.on('change', observer);
storage.putSync('startup', 'auto');
storage.flushSync();  // observer will be called.
```
Z
zengyawen 已提交
882 883


884
### off('change')
Z
zengyawen 已提交
885 886 887 888 889

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

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

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

G
ge-yafang 已提交
892
**参数:**
893

894
| 参数名   | 类型                                                | 必填 |  说明                                 |
895 896 897
| -------- | --------------------------------------------------- | ------ |---------------------------------------- |
| type     | string                                              |是| 事件类型,固定值'change',表示数据变更。 |
| callback | Callback<[StorageObserver](#storageobserver)> | 是|需要取消的回调对象实例。                 |
Z
zengyawen 已提交
898

G
ge-yafang 已提交
899
**示例:**
900 901

```js
902
let observer = function (key) {
903 904 905 906
    console.info("The key of " + key + " changed.");
}
storage.off('change', observer);
```
Z
zengyawen 已提交
907 908


909 910
## StorageObserver

911
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
Z
zengyawen 已提交
912

913
| 名称 | 类型 | 必填 | 说明             |
914 915
| ---- | -------- | ---- | ---------------- |
| key  | string   | 否   | 变更的数据内容。 |
G
ge-yafang 已提交
916 917 918 919 920

## ValueType

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

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

923
| 类型    | 说明                 |
G
ge-yafang 已提交
924 925 926
| ------- | -------------------- |
| number  | 表示值类型为数字。   |
| string  | 表示值类型为字符。   |
927
| boolean | 表示值类型为布尔值。 |