• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.filemanagement.userFileManager (用户数据管理)
2
3该模块提供用户数据管理能力,包括访问、修改用户公共媒体数据信息等常用功能。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> - 本模块接口为系统接口。
9
10## 导入模块
11
12```ts
13import userFileManager from '@ohos.filemanagement.userFileManager';
14```
15
16## userFileManager.getUserFileMgr
17
18getUserFileMgr(context: Context): UserFileManager
19
20获取用户数据管理模块的实例,用于访问和修改用户公共媒体数据信息(如音频、视频、图片、文档等)。
21
22**模型约束**: 此接口仅可在Stage模型下使用。
23
24**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
25
26**参数:**
27
28| 参数名  | 类型    | 必填 | 说明                       |
29| ------- | ------- | ---- | -------------------------- |
30| context | [Context](js-apis-inner-app-context.md) | 是   | 传入Ability实例的Context。 |
31
32**返回值:**
33
34| 类型                            | 说明    |
35| ----------------------------- | :---- |
36| [UserFileManager](#userfilemanager) | 媒体库实例。 |
37
38**示例:**
39
40```ts
41//此处获取的userFileManager实例mgr为全局对象,后续使用到mgr的地方默认为使用此处获取的对象,如未添加此段代码报mgr未定义的错误请自行添加
42const context = getContext(this);
43let mgr = userFileManager.getUserFileMgr(context);
44```
45
46## UserFileManager
47
48### getPhotoAssets
49
50getPhotoAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<FileAsset>>): void;
51
52获取图片和视频资源,使用callback方式返回结果。
53
54**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
55
56**需要权限**:ohos.permission.READ_IMAGEVIDEO
57
58**参数:**
59
60| 参数名   | 类型                     | 必填 | 说明                      |
61| -------- | ------------------------ | ---- | ------------------------- |
62| options  | [FetchOptions](#fetchoptions)        | 是   | 图片和视频检索选项。              |
63| callback |  AsyncCallback<[FetchResult](#fetchresult)<[FileAsset](#fileasset)>> | 是   | callback返回图片和视频检索结果集。 |
64
65**错误码:**
66
67接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
68
69| 错误码ID | 错误信息 |
70| -------- | ---------------------------------------- |
71| 13900020   | if type options is not FetchOptions.         |
72
73**示例:**
74
75```ts
76import dataSharePredicates from '@ohos.data.dataSharePredicates';
77
78async function example() {
79  console.info('getPhotoAssets');
80  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
81  let fetchOptions: userFileManager.FetchOptions = {
82    fetchColumns: [],
83    predicates: predicates
84  };
85
86  mgr.getPhotoAssets(fetchOptions, async (err, fetchResult) => {
87    if (fetchResult != undefined) {
88      console.info('fetchResult success');
89      let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
90      if (fileAsset != undefined) {
91        console.info('fileAsset.displayName : ' + fileAsset.displayName);
92      }
93    } else {
94      console.error('fetchResult fail' + err);
95    }
96  });
97}
98```
99
100### getPhotoAssets
101
102getPhotoAssets(options: FetchOptions): Promise<FetchResult<FileAsset>>;
103
104获取图片和视频资源,使用Promise方式返回结果。
105
106**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
107
108**需要权限**:ohos.permission.READ_IMAGEVIDEO
109
110**参数:**
111
112| 参数名  | 类型                | 必填 | 说明             |
113| ------- | ------------------- | ---- | ---------------- |
114| options | [FetchOptions](#fetchoptions)   | 是   | 图片和视频检索选项。     |
115
116**返回值:**
117
118| 类型                        | 说明           |
119| --------------------------- | -------------- |
120| Promise<[FetchResult](#fetchresult)<[FileAsset](#fileasset)>> | Promise对象,返回图片和视频数据结果集。 |
121
122**错误码:**
123
124接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
125
126| 错误码ID | 错误信息 |
127| -------- | ---------------------------------------- |
128| 13900020   | if type options is not FetchOptions.         |
129
130**示例:**
131
132```ts
133import dataSharePredicates from '@ohos.data.dataSharePredicates';
134
135async function example() {
136  console.info('getPhotoAssets');
137  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
138  let fetchOptions: userFileManager.FetchOptions = {
139    fetchColumns: [],
140    predicates: predicates
141  };
142  try {
143    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
144    if (fetchResult != undefined) {
145      console.info('fetchResult success');
146      let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
147      if (fileAsset != undefined) {
148        console.info('fileAsset.displayName :' + fileAsset.displayName);
149      }
150    }
151  } catch (err) {
152    console.error('getPhotoAssets failed, message = ', err);
153  }
154}
155```
156### createPhotoAsset
157
158createPhotoAsset(displayName: string, albumUri: string, callback: AsyncCallback&lt;FileAsset&gt;): void;
159
160指定待创建的图片或者视频的文件名和所在相册的uri,创建图片或视频资源,使用callback方式返回结果。
161
162**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
163
164**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
165
166**参数:**
167
168| 参数名   | 类型                     | 必填 | 说明                      |
169| -------- | ------------------------ | ---- | ------------------------- |
170| displayName  | string        | 是   | 创建的图片或者视频文件名。              |
171| albumUri  | string        | 是   | 创建的图片或者视频所在相册的uri。              |
172| callback |  AsyncCallback&lt;[FileAsset](#fileasset)&gt; | 是   | callback返回创建的图片和视频结果。 |
173
174**错误码:**
175
176接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
177
178| 错误码ID | 错误信息 |
179| -------- | ---------------------------------------- |
180| 13900020   | if type displayName or albumUri is not string.         |
181| 14000001   | if type displayName invalid.         |
182
183**示例:**
184
185```ts
186import dataSharePredicates from '@ohos.data.dataSharePredicates';
187
188async function example() {
189  console.info('createPhotoAssetDemo');
190  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
191  let fetchOptions: userFileManager.AlbumFetchOptions = {
192    predicates: predicates
193  };
194  let albums: userFileManager.FetchResult<userFileManager.Album> = await mgr.getPhotoAlbums(fetchOptions);
195  let album: userFileManager.Album = await albums.getFirstObject();
196  let testFileName: string = 'testFile' + Date.now() + '.jpg';
197  mgr.createPhotoAsset(testFileName, album.albumUri, (err, fileAsset) => {
198    if (fileAsset != undefined) {
199      console.info('createPhotoAsset file displayName' + fileAsset.displayName);
200      console.info('createPhotoAsset successfully');
201    } else {
202      console.error('createPhotoAsset failed, message = ', err);
203    }
204  });
205}
206```
207
208### createPhotoAsset
209
210createPhotoAsset(displayName: string, callback: AsyncCallback&lt;FileAsset&gt;): void;
211
212指定待创建的图片或者视频的文件名,创建图片或视频资源,使用callback方式返回结果。
213
214**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
215
216**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
217
218**参数:**
219
220| 参数名   | 类型                     | 必填 | 说明                      |
221| -------- | ------------------------ | ---- | ------------------------- |
222| displayName  | string        | 是   | 创建的图片或者视频文件名。              |
223| callback |  AsyncCallback&lt;[FileAsset](#fileasset)&gt; | 是   | callback返回创建的图片和视频结果。 |
224
225**错误码:**
226
227接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
228
229| 错误码ID | 错误信息 |
230| -------- | ---------------------------------------- |
231| 13900020   | if type displayName is not string.         |
232| 14000001   | if type displayName invalid.         |
233
234**示例:**
235
236```ts
237async function example() {
238  console.info('createPhotoAssetDemo');
239  let testFileName: string = 'testFile' + Date.now() + '.jpg';
240  mgr.createPhotoAsset(testFileName, (err, fileAsset) => {
241    if (fileAsset != undefined) {
242      console.info('createPhotoAsset file displayName' + fileAsset.displayName);
243      console.info('createPhotoAsset successfully');
244    } else {
245      console.error('createPhotoAsset failed, message = ', err);
246    }
247  });
248}
249```
250
251### createPhotoAsset
252
253createPhotoAsset(displayName: string, albumUri?: string): Promise&lt;FileAsset&gt;;
254
255指定待创建的图片或者视频的文件名和所在相册的uri,创建图片或视频资源,使用Promise方式返回结果。
256
257**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
258
259**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
260
261**参数:**
262
263| 参数名   | 类型                     | 必填 | 说明                      |
264| -------- | ------------------------ | ---- | ------------------------- |
265| displayName  | string        | 是   | 创建的图片或者视频文件名。              |
266| albumUri  | string        | 否   | 创建的图片或者视频所在相册的uri。              |
267
268**返回值:**
269
270| 类型                        | 说明           |
271| --------------------------- | -------------- |
272| Promise&lt;[FileAsset](#fileasset)&gt; | Promise对象,返回创建的图片和视频结果。 |
273
274**错误码:**
275
276接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
277
278| 错误码ID | 错误信息 |
279| -------- | ---------------------------------------- |
280| 13900020   | if type displayName or albumUri is not string.         |
281
282**示例:**
283
284```ts
285async function example() {
286  console.info('createPhotoAssetDemo');
287  try {
288    let testFileName: string = 'testFile' + Date.now() + '.jpg';
289    let fileAsset: userFileManager.FileAsset = await mgr.createPhotoAsset(testFileName);
290    console.info('createPhotoAsset file displayName' + fileAsset.displayName);
291    console.info('createPhotoAsset successfully');
292  } catch (err) {
293    console.error('createPhotoAsset failed, message = ', err);
294  }
295}
296```
297
298### createPhotoAsset
299
300createPhotoAsset(displayName: string, createOption: PhotoCreateOptions, callback: AsyncCallback&lt;FileAsset&gt;): void;
301
302指定待创建的图片或者视频的文件名和创建选项,创建图片或视频资源,使用callback方式返回结果。
303
304**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
305
306**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
307
308**参数:**
309
310| 参数名   | 类型                     | 必填 | 说明                      |
311| -------- | ------------------------ | ---- | ------------------------- |
312| displayName  | string        | 是   | 创建的图片或者视频文件名。              |
313| createOption  | [PhotoCreateOptions](#photocreateoptions10)        | 是   | 图片或视频的创建选项。              |
314| callback |  AsyncCallback&lt;[FileAsset](#fileasset)&gt; | 是   | callback返回创建的图片和视频结果。 |
315
316**错误码:**
317
318接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
319
320| 错误码ID | 错误信息 |
321| -------- | ---------------------------------------- |
322| 13900020   | if type displayName is not string.         |
323| 14000001   | if type displayName invalid.         |
324
325**示例:**
326
327```ts
328async function example() {
329  console.info('createPhotoAssetDemo');
330  let testFileName: string = 'testFile' + Date.now() + '.jpg';
331  let createOption: userFileManager.PhotoCreateOptions = {
332    subType: userFileManager.PhotoSubType.DEFAULT
333  }
334  mgr.createPhotoAsset(testFileName, createOption, (err, fileAsset) => {
335    if (fileAsset != undefined) {
336      console.info('createPhotoAsset file displayName' + fileAsset.displayName);
337      console.info('createPhotoAsset successfully');
338    } else {
339      console.error('createPhotoAsset failed, message = ', err);
340    }
341  });
342}
343```
344
345### createPhotoAsset
346
347createPhotoAsset(displayName: string, createOption: PhotoCreateOptions): Promise&lt;FileAsset&gt;;
348
349指定待创建的图片或者视频的文件名和创建选项,创建图片或视频资源,使用Promise方式返回结果。
350
351**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
352
353**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
354
355**参数:**
356
357| 参数名   | 类型                     | 必填 | 说明                      |
358| -------- | ------------------------ | ---- | ------------------------- |
359| displayName  | string        | 是   | 创建的图片或者视频文件名。              |
360| createOption  |  [PhotoCreateOptions](#photocreateoptions10)       | 是   | 图片或视频的创建选项。              |
361
362**返回值:**
363
364| 类型                        | 说明           |
365| --------------------------- | -------------- |
366| Promise&lt;[FileAsset](#fileasset)&gt; | Promise对象,返回创建的图片和视频结果。 |
367
368**错误码:**
369
370接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
371
372| 错误码ID | 错误信息 |
373| -------- | ---------------------------------------- |
374| 13900020   | if type displayName is not string.         |
375
376**示例:**
377
378```ts
379async function example() {
380  console.info('createPhotoAssetDemo');
381  try {
382    let testFileName: string = 'testFile' + Date.now() + '.jpg';
383    let createOption: userFileManager.PhotoCreateOptions = {
384      subType: userFileManager.PhotoSubType.DEFAULT
385    }
386    let fileAsset: userFileManager.FileAsset = await mgr.createPhotoAsset(testFileName, createOption);
387    console.info('createPhotoAsset file displayName' + fileAsset.displayName);
388    console.info('createPhotoAsset successfully');
389  } catch (err) {
390    console.error('createPhotoAsset failed, message = ', err);
391  }
392}
393```
394
395### createAudioAsset<sup>10+</sup>
396
397createAudioAsset(displayName: string, callback: AsyncCallback&lt;FileAsset&gt;): void;
398
399创建音频文件资源,使用callback方式返回结果。
400
401**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
402
403**需要权限**:ohos.permission.WRITE_AUDIO
404
405**参数:**
406
407| 参数名   | 类型                     | 必填 | 说明                      |
408| -------- | ------------------------ | ---- | ------------------------- |
409| displayName  | string        | 是   | 创建的音频文件名。              |
410| callback |  AsyncCallback&lt;[FileAsset](#fileasset)&gt; | 是   | callback返回创建的音频资源结果。 |
411
412**错误码:**
413
414接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
415
416| 错误码ID | 错误信息 |
417| -------- | ---------------------------------------- |
418| 13900020   | if type displayName is not string.         |
419| 14000001   | if type displayName invalid.         |
420
421**示例:**
422
423```ts
424async function example() {
425  console.info('createAudioAssetDemo');
426  let testFileName: string = 'testFile' + Date.now() + '.mp3';
427  mgr.createAudioAsset(testFileName, (err, fileAsset) => {
428    if (fileAsset != undefined) {
429      console.info('createAudioAsset file displayName' + fileAsset.displayName);
430      console.info('createAudioAsset successfully');
431    } else {
432      console.error('createAudioAsset failed, message = ', err);
433    }
434  });
435}
436```
437
438### createAudioAsset<sup>10+</sup>
439
440createAudioAsset(displayName: string): Promise&lt;FileAsset&gt;;
441
442创建音频文件资源,使用Promise方式返回结果。
443
444**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
445
446**需要权限**:ohos.permission.WRITE_AUDIO
447
448**参数:**
449
450| 参数名   | 类型                     | 必填 | 说明                      |
451| -------- | ------------------------ | ---- | ------------------------- |
452| displayName  | string        | 是   | 创建的音频文件名。              |
453
454**返回值:**
455
456| 类型                        | 说明           |
457| --------------------------- | -------------- |
458| Promise&lt;[FileAsset](#fileasset)&gt; | Promise对象,返回创建的音频资源结果。 |
459
460**错误码:**
461
462接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
463
464| 错误码ID | 错误信息 |
465| -------- | ---------------------------------------- |
466| 13900020   | if type displayName is not string.         |
467
468**示例:**
469
470```ts
471async function example() {
472  console.info('createAudioAssetDemo');
473  try {
474    let testFileName: string = 'testFile' + Date.now() + '.mp3';
475    let fileAsset: userFileManager.FileAsset = await mgr.createAudioAsset(testFileName);
476    console.info('createAudioAsset file displayName' + fileAsset.displayName);
477    console.info('createAudioAsset successfully');
478  } catch (err) {
479    console.error('createAudioAsset failed, message = ', err);
480  }
481}
482```
483
484### createAlbum<sup>10+</sup>
485
486createAlbum(name: string, callback: AsyncCallback&lt;Album&gt;): void;
487
488创建相册,使用callback方式返回结果。
489
490待创建的相册名参数规格为:
491- 相册名字符串长度为1~255。
492- 不允许出现的非法英文字符,包括:<br> . .. \ / : * ? " ' ` < > | { } [ ]
493- 英文字符大小写不敏感。
494- 相册名不允许重名。
495
496**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
497
498**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
499
500**参数:**
501
502| 参数名   | 类型                     | 必填 | 说明                      |
503| -------- | ------------------------ | ---- | ------------------------- |
504| name  | string         | 是   | 待创建相册的相册名。              |
505| callback |  AsyncCallback&lt;[Album](#album)&gt; | 是   | callback返回创建的相册实例。 |
506
507**示例:**
508
509```ts
510async function example() {
511  console.info('createAlbumDemo');
512  let albumName: string = 'newAlbumName' + new Date().getTime();
513  mgr.createAlbum(albumName, (err, album) => {
514    if (err) {
515      console.error('createAlbumCallback failed with err: ' + err);
516      return;
517    }
518    console.info('createAlbumCallback successfully, album: ' + album.albumName + ' album uri: ' + album.albumUri);
519  });
520}
521```
522
523### createAlbum<sup>10+</sup>
524
525createAlbum(name: string): Promise&lt;Album&gt;;
526
527创建相册,使用Promise方式返回结果。
528
529待创建的相册名参数规格为:
530- 相册名字符串长度为1~255。
531- 不允许出现的非法英文字符,包括:<br> . .. \ / : * ? " ' ` < > | { } [ ]
532- 英文字符大小写不敏感。
533- 相册名不允许重名。
534
535**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
536
537**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
538
539**参数:**
540
541| 参数名   | 类型                     | 必填 | 说明                      |
542| -------- | ------------------------ | ---- | ------------------------- |
543| name  | string         | 是   | 待创建相册的相册名。              |
544
545**返回值:**
546
547| 类型                        | 说明           |
548| --------------------------- | -------------- |
549| Promise&lt;[Album](#album)&gt; | Promise对象,返回创建的相册实例。 |
550
551**示例:**
552
553```ts
554import { BusinessError } from '@ohos.base';
555
556async function example() {
557  console.info('createAlbumDemo');
558  let albumName: string  = 'newAlbumName' + new Date().getTime();
559  mgr.createAlbum(albumName).then((album) => {
560    console.info('createAlbumPromise successfully, album: ' + album.albumName + ' album uri: ' + album.albumUri);
561  }).catch((err: BusinessError) => {
562    console.error('createAlbumPromise failed with err: ' + err);
563  });
564}
565```
566
567### deleteAlbums<sup>10+</sup>
568
569deleteAlbums(albums: Array&lt;Album&gt;, callback: AsyncCallback&lt;void&gt;): void;
570
571删除相册,使用callback方式返回结果。
572
573删除相册前需先确保相册存在,只能删除用户相册。
574
575**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
576
577**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
578
579**参数:**
580
581| 参数名   | 类型                     | 必填 | 说明                      |
582| -------- | ------------------------ | ---- | ------------------------- |
583| albums  | Array&lt;[Album](#album)&gt;         | 是   | 待删除相册的数组。              |
584| callback |  AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
585
586**示例:**
587
588```ts
589import dataSharePredicates from '@ohos.data.dataSharePredicates';
590
591async function example() {
592  // 示例代码为删除相册名为newAlbumName的相册。
593  console.info('deleteAlbumsDemo');
594  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
595  predicates.equalTo('album_name', 'newAlbumName');
596  let fetchOptions: userFileManager.FetchOptions = {
597    fetchColumns: [],
598    predicates: predicates
599  };
600  let fetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC, fetchOptions);
601  let album: userFileManager.Album = await fetchResult.getFirstObject();
602  mgr.deleteAlbums([album], (err) => {
603    if (err) {
604      console.error('deletePhotoAlbumsCallback failed with err: ' + err);
605      return;
606    }
607    console.info('deletePhotoAlbumsCallback successfully');
608  });
609  fetchResult.close();
610}
611```
612
613### deleteAlbums<sup>10+</sup>
614
615deleteAlbums(albums: Array&lt;Album&gt;): Promise&lt;void&gt;;
616
617删除相册,使用Promise方式返回结果。
618
619删除相册前需先确保相册存在,只能删除用户相册。
620
621**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
622
623**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
624
625**参数:**
626
627| 参数名   | 类型                     | 必填 | 说明                      |
628| -------- | ------------------------ | ---- | ------------------------- |
629| albums  |  Array&lt;[Album](#album)&gt;          | 是   | 待删除相册的数组。              |
630
631**返回值:**
632
633| 类型                        | 说明           |
634| --------------------------- | -------------- |
635| Promise&lt;void&gt; | Promise对象,返回void。 |
636
637**示例:**
638
639```ts
640import dataSharePredicates from '@ohos.data.dataSharePredicates';
641import { BusinessError } from '@ohos.base';
642
643async function example() {
644  // 示例代码为删除相册名为newAlbumName的相册。
645  console.info('deleteAlbumsDemo');
646  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
647  predicates.equalTo('album_name', 'newAlbumName');
648  let fetchOptions: userFileManager.FetchOptions = {
649    fetchColumns: [],
650    predicates: predicates
651  };
652  let fetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC, fetchOptions);
653  let album: userFileManager.Album = await fetchResult.getFirstObject();
654  mgr.deleteAlbums([album]).then(() => {
655    console.info('deletePhotoAlbumsPromise successfully');
656    }).catch((err: BusinessError) => {
657      console.error('deletePhotoAlbumsPromise failed with err: ' + err);
658  });
659  fetchResult.close();
660}
661```
662
663### getAlbums<sup>10+</sup>
664
665getAlbums(type: AlbumType, subType: AlbumSubType, options: FetchOptions, callback: AsyncCallback&lt;FetchResult&lt;Album&gt;&gt;): void;
666
667根据检索选项和相册类型获取相册,使用callback方式返回结果。
668
669获取相册前需先保证相册存在。
670
671**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
672
673**需要权限**:ohos.permission.READ_IMAGEVIDEO
674
675**参数:**
676
677| 参数名   | 类型                     | 必填 | 说明                      |
678| -------- | ------------------------ | ---- | ------------------------- |
679| type  | [AlbumType](#albumtype10)         | 是   | 相册类型。              |
680| subType  | [AlbumSubType](#albumsubtype10)         | 是   | 相册子类型。              |
681| options  | [FetchOptions](#fetchoptions)         | 是   |  检索选项。              |
682| callback |  AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | 是   | callback返回获取相册的结果集。 |
683
684**错误码:**
685
686接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
687
688| 错误码ID | 错误信息 |
689| -------- | ---------------------------------------- |
690| 13900020   | if type options is not FetchOption.         |
691
692**示例:**
693
694```ts
695import dataSharePredicates from '@ohos.data.dataSharePredicates';
696
697async function example() {
698  // 示例代码中为获取相册名为newAlbumName的相册。
699  console.info('getAlbumsDemo');
700  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
701  predicates.equalTo('album_name', 'newAlbumName');
702  let fetchOptions: userFileManager.FetchOptions = {
703    fetchColumns: [],
704    predicates: predicates
705  };
706  mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC, fetchOptions, async (err, fetchResult) => {
707    if (err) {
708      console.error('getAlbumsCallback failed with err: ' + err);
709      return;
710    }
711    if (fetchResult == undefined) {
712      console.error('getAlbumsCallback fetchResult is undefined');
713      return;
714    }
715    let album: userFileManager.Album = await fetchResult.getFirstObject();
716    console.info('getAlbumsCallback successfully, albumName: ' + album.albumName);
717    fetchResult.close();
718  });
719}
720```
721
722### getAlbums<sup>10+</sup>
723
724getAlbums(type: AlbumType, subType: AlbumSubType, callback: AsyncCallback&lt;FetchResult&lt;Album&gt;&gt;): void;
725
726根据相册类型获取相册,使用callback方式返回结果。
727
728获取相册前需先保证相册存在。
729
730**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
731
732**需要权限**:ohos.permission.READ_IMAGEVIDEO
733
734**参数:**
735
736| 参数名   | 类型                     | 必填 | 说明                      |
737| -------- | ------------------------ | ---- | ------------------------- |
738| type  | [AlbumType](#albumtype10)         | 是   | 相册类型。              |
739| subType  | [AlbumSubType](#albumsubtype10)         | 是   | 相册子类型。              |
740| callback |  AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | 是   | callback返回获取相册的结果集。 |
741
742**错误码:**
743
744接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
745
746| 错误码ID | 错误信息 |
747| -------- | ---------------------------------------- |
748| 13900020   | if type options is not FetchOption.         |
749
750**示例:**
751
752```ts
753async function example() {
754  // 示例代码中为获取统相册VIDEO,默认已预置。
755  console.info('getAlbumsDemo');
756  mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.VIDEO, async (err, fetchResult) => {
757    if (err) {
758      console.error('getAlbumsCallback failed with err: ' + err);
759      return;
760    }
761    if (fetchResult == undefined) {
762      console.error('getAlbumsCallback fetchResult is undefined');
763      return;
764    }
765    let album: userFileManager.Album = await fetchResult.getFirstObject();
766    console.info('getAlbumsCallback successfully, albumUri: ' + album.albumUri);
767    fetchResult.close();
768  });
769}
770```
771
772### getAlbums<sup>10+</sup>
773
774getAlbums(type: AlbumType, subType: AlbumSubType, options?: FetchOptions): Promise&lt;FetchResult&lt;Album&gt;&gt;;
775
776根据检索选项和相册类型获取相册,使用Promise方式返回结果。
777
778获取相册前需先保证相册存在。
779
780**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
781
782**需要权限**:ohos.permission.READ_IMAGEVIDEO
783
784**参数:**
785
786| 参数名   | 类型                     | 必填 | 说明                      |
787| -------- | ------------------------ | ---- | ------------------------- |
788| type  | [AlbumType](#albumtype10)         | 是   | 相册类型。              |
789| subType  | [AlbumSubType](#albumsubtype10)         | 是   | 相册子类型。              |
790| options  | [FetchOptions](#fetchoptions)         | 否   |  检索选项,不填时默认根据相册类型检索。              |
791
792**返回值:**
793
794| 类型                        | 说明           |
795| --------------------------- | -------------- |
796| Promise&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | Promise对象,返回获取相册的结果集。 |
797
798**错误码:**
799
800接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
801
802| 错误码ID | 错误信息 |
803| -------- | ---------------------------------------- |
804| 13900020   | if type options is not FetchOption.         |
805
806**示例:**
807
808```ts
809import dataSharePredicates from '@ohos.data.dataSharePredicates';
810import { BusinessError } from '@ohos.base';
811
812async function example() {
813  // 示例代码中为获取相册名为newAlbumName的相册。
814  console.info('getAlbumsDemo');
815  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
816  predicates.equalTo('album_name', 'newAlbumName');
817  let fetchOptions: userFileManager.FetchOptions = {
818    fetchColumns: [],
819    predicates: predicates
820  };
821  mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC, fetchOptions).then( async (fetchResult) => {
822    if (fetchResult == undefined) {
823      console.error('getAlbumsPromise fetchResult is undefined');
824      return;
825    }
826    let album: userFileManager.Album = await fetchResult.getFirstObject();
827    console.info('getAlbumsPromise successfully, albumName: ' + album.albumName);
828    fetchResult.close();
829  }).catch((err: BusinessError) => {
830    console.error('getAlbumsPromise failed with err: ' + err);
831  });
832}
833```
834
835### getPhotoAlbums
836
837getPhotoAlbums(options: AlbumFetchOptions, callback: AsyncCallback&lt;FetchResult&lt;Album&gt;&gt;): void;
838
839获取相册,使用callback方式返回结果。
840
841此接口即将废弃,请使用[getAlbums<sup>10+</sup>](#getalbums10)的新接口。
842
843**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
844
845**需要权限**:ohos.permission.READ_IMAGEVIDEO
846
847**参数:**
848
849| 参数名   | 类型                     | 必填 | 说明                      |
850| -------- | ------------------------ | ---- | ------------------------- |
851| options  | [AlbumFetchOptions](#albumfetchoptions)        | 是   | 相册检索选项。              |
852| callback |  AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | 是   | callback返回相册检索结果。 |
853
854**错误码:**
855
856接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
857
858| 错误码ID | 错误信息 |
859| -------- | ---------------------------------------- |
860| 13900020   | if type options is not AlbumFetchOptions.         |
861
862**示例:**
863
864```ts
865import dataSharePredicates from '@ohos.data.dataSharePredicates';
866
867async function example() {
868  console.info('getPhotoAlbumsDemo');
869  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
870  let albumFetchOptions: userFileManager.AlbumFetchOptions = {
871    predicates: predicates
872  };
873
874  mgr.getPhotoAlbums(albumFetchOptions, (err, fetchResult) => {
875    if (fetchResult != undefined) {
876      console.info('albums.count = ' + fetchResult.getCount());
877      fetchResult.getFirstObject((err, album) => {
878        if (album != undefined) {
879          console.info('first album.albumName = ' + album.albumName);
880        } else {
881          console.error('album is undefined, err = ', err);
882        }
883      });
884    } else {
885      console.error('getPhotoAlbums fail, message = ', err);
886    }
887  });
888}
889```
890
891### getPhotoAlbums
892
893getPhotoAlbums(options: AlbumFetchOptions): Promise&lt;FetchResult&lt;Album&gt;&gt;;
894
895获取相册,使用Promise方式返回结果。
896
897此接口即将废弃,请使用[getAlbums<sup>10+</sup>](#getalbums10)的新接口。
898
899**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
900
901**需要权限**:ohos.permission.READ_IMAGEVIDEO
902
903**参数:**
904
905| 参数名   | 类型                     | 必填 | 说明                      |
906| -------- | ------------------------ | ---- | ------------------------- |
907| options  | [AlbumFetchOptions](#albumfetchoptions)        | 是   | 相册检索选项。              |
908
909**返回值:**
910
911| 类型                        | 说明           |
912| --------------------------- | -------------- |
913| Promise&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | Promise对象,返回相册检索结果。 |
914
915**错误码:**
916
917接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
918
919| 错误码ID | 错误信息 |
920| -------- | ---------------------------------------- |
921| 13900020   | if type options is not AlbumFetchOptions.         |
922
923**示例:**
924
925```ts
926import dataSharePredicates from '@ohos.data.dataSharePredicates';
927
928async function example() {
929  console.info('getPhotoAlbumsDemo');
930  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
931  let albumFetchOptions: userFileManager.AlbumFetchOptions = {
932    predicates: predicates
933  };
934  try {
935    let fetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getPhotoAlbums(albumFetchOptions);
936    console.info('album.count = ' + fetchResult.getCount());
937    const album: userFileManager.Album = await fetchResult.getFirstObject();
938    console.info('first album.albumName = ' + album.albumName);
939  } catch (err) {
940    console.error('getPhotoAlbums fail, message = ' + err);
941  }
942}
943```
944
945### getPrivateAlbum
946
947getPrivateAlbum(type: PrivateAlbumType, callback: AsyncCallback&lt;FetchResult&lt;PrivateAlbum&gt;&gt;): void;
948
949获取系统相册,使用 callback 方式返回系统相册的数组。
950
951此接口即将废弃,请使用[getAlbums<sup>10+</sup>](#getalbums10)的新接口。
952
953**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
954
955**需要权限**:ohos.permission.READ_IMAGEVIDEO
956
957**参数:**
958
959| 参数名   | 类型                     | 必填 | 说明                      |
960| -------- | ------------------------ | ---- | ------------------------- |
961| type  | [PrivateAlbumType](#privatealbumtype)        | 是   | 系统相册类型。              |
962| callback |  AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[PrivateAlbum](#privatealbum)&gt;&gt; | 是   | callback返回相册检索结果。 |
963
964**错误码:**
965
966接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
967
968| 错误码ID | 错误信息 |
969| -------- | ---------------------------------------- |
970| 13900020   | if type type is not PrivateAlbumType.         |
971
972**示例:**
973
974```ts
975async function example() {
976  console.info('getPrivateAlbumDemo');
977  mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH, async (err, fetchResult) => {
978    if (fetchResult != undefined) {
979      let trashAlbum: userFileManager.PrivateAlbum = await fetchResult.getFirstObject();
980      console.info('first album.albumName = ' + trashAlbum.albumName);
981    } else {
982      console.error('getPrivateAlbum failed. message = ', err);
983    }
984  });
985}
986```
987
988### getPrivateAlbum
989
990getPrivateAlbum(type: PrivateAlbumType): Promise&lt;FetchResult&lt;PrivateAlbum&gt;&gt;;
991
992获取系统相册,使用Promise方式返回结果。
993
994此接口即将废弃,请使用[getAlbums<sup>10+</sup>](#getalbums10)的新接口。
995
996**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
997
998**需要权限**:ohos.permission.READ_IMAGEVIDEO
999
1000**参数:**
1001
1002| 参数名   | 类型                     | 必填 | 说明                      |
1003| -------- | ------------------------ | ---- | ------------------------- |
1004| type  | [PrivateAlbumType](#privatealbumtype)        | 是   | 系统相册类型。              |
1005
1006**返回值:**
1007
1008| 类型                        | 说明           |
1009| --------------------------- | -------------- |
1010| Promise&lt;[FetchResult](#fetchresult)&lt;[PrivateAlbum](#privatealbum)&gt;&gt; | Promise对象,返回相册检索结果。 |
1011
1012**错误码:**
1013
1014接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1015
1016| 错误码ID | 错误信息 |
1017| -------- | ---------------------------------------- |
1018| 13900020   | if type type is not PrivateAlbumType.         |
1019
1020**示例:**
1021
1022```ts
1023async function example() {
1024  console.info('getPrivateAlbumDemo');
1025  try {
1026    let fetchResult: userFileManager.FetchResult<userFileManager.PrivateAlbum> = await mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH);
1027    let trashAlbum: userFileManager.PrivateAlbum = await fetchResult.getFirstObject();
1028    console.info('first album.albumName = ' + trashAlbum.albumName);
1029  } catch (err) {
1030    console.error('getPrivateAlbum failed. message = ', err);
1031  }
1032}
1033```
1034
1035### getAudioAssets
1036
1037getAudioAssets(options: FetchOptions, callback: AsyncCallback&lt;FetchResult&lt;FileAsset&gt;&gt;): void;
1038
1039获取音频文件,使用callback方式返回结果。
1040
1041**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1042
1043**需要权限**:ohos.permission.READ_AUDIO
1044
1045**参数:**
1046
1047| 参数名   | 类型                     | 必填 | 说明                      |
1048| -------- | ------------------------ | ---- | ------------------------- |
1049| options  | [FetchOptions](#fetchoptions)        | 是   | 检索选项。              |
1050| callback |  AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[FileAsset](#fileasset)&gt;&gt; | 是   | callback返回音频检索结果。 |
1051
1052**错误码:**
1053
1054接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1055
1056| 错误码ID | 错误信息 |
1057| -------- | ---------------------------------------- |
1058| 13900020   | if type options is not FetchOptions.         |
1059
1060**示例:**
1061
1062```ts
1063import dataSharePredicates from '@ohos.data.dataSharePredicates';
1064
1065async function example() {
1066  console.info('getAudioAssets');
1067  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1068  let fetchOptions: userFileManager.FetchOptions = {
1069    fetchColumns: [],
1070    predicates: predicates
1071  };
1072
1073  mgr.getAudioAssets(fetchOptions, async (err, fetchResult) => {
1074    if (fetchResult != undefined) {
1075      console.info('fetchFileResult success');
1076      let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1077      if (fileAsset != undefined) {
1078        console.info('fileAsset.displayName :' + fileAsset.displayName);
1079      }
1080    } else {
1081      console.error('fetchFileResult fail' + err);
1082    }
1083  });
1084}
1085```
1086
1087### getAudioAssets
1088
1089getAudioAssets(options: FetchOptions): Promise&lt;FetchResult&lt;FileAsset&gt;&gt;;
1090
1091
1092获取音频文件,使用callback方式返回结果。
1093
1094**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1095
1096**需要权限**:ohos.permission.READ_AUDIO
1097
1098**参数:**
1099
1100| 参数名   | 类型                     | 必填 | 说明                      |
1101| -------- | ------------------------ | ---- | ------------------------- |
1102| options  | [FetchOptions](#fetchoptions)        | 是   | 检索选项。              |
1103
1104**返回值:**
1105
1106| 类型                        | 说明           |
1107| --------------------------- | -------------- |
1108| Promise&lt;[FetchResult](#fetchresult)&lt;[FileAsset](#fileasset)&gt;&gt; | Promise对象,返回音频检索结果。 |
1109
1110**错误码:**
1111
1112接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1113
1114| 错误码ID | 错误信息 |
1115| -------- | ---------------------------------------- |
1116| 13900020   | if type options is not FetchOptions.         |
1117
1118**示例:**
1119
1120```ts
1121import dataSharePredicates from '@ohos.data.dataSharePredicates';
1122
1123async function example() {
1124  console.info('getAudioAssets');
1125  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1126  let fetchOptions: userFileManager.FetchOptions = {
1127    fetchColumns: [],
1128    predicates: predicates
1129  };
1130  try {
1131    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getAudioAssets(fetchOptions);
1132    if (fetchResult != undefined) {
1133      console.info('fetchFileResult success');
1134      let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1135      if (fileAsset != undefined) {
1136        console.info('fileAsset.displayName :' + fileAsset.displayName);
1137      }
1138    }
1139  } catch (err) {
1140    console.error('getAudioAssets failed, message = ', err);
1141  }
1142}
1143```
1144
1145### delete
1146
1147delete(uri: string, callback: AsyncCallback&lt;void&gt;): void;
1148
1149删除媒体文件,删除的文件进入到回收站。
1150
1151**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_AUDIO
1152
1153**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1154
1155**参数:**
1156
1157| 参数名   | 类型                      | 必填 | 说明       |
1158| -------- | ------------------------- | ---- | ---------- |
1159| uri | string | 是   | 媒体文件uri。 |
1160| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
1161
1162**错误码:**
1163
1164接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1165
1166| 错误码ID | 错误信息 |
1167| -------- | ---------------------------------------- |
1168| 13900020   | if type uri is not string.         |
1169
1170**示例:**
1171
1172```ts
1173import dataSharePredicates from '@ohos.data.dataSharePredicates';
1174
1175async function example() {
1176  console.info('deleteAssetDemo');
1177  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1178  let fetchOptions: userFileManager.FetchOptions = {
1179    fetchColumns: [],
1180    predicates: predicates
1181  };
1182  try {
1183    const fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
1184    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1185
1186
1187    if (asset == undefined) {
1188      console.error('asset not exist');
1189      return;
1190    }
1191    mgr.delete(asset.uri, (err) => {
1192      if (err == undefined) {
1193        console.info('delete successfully');
1194      } else {
1195        console.error('delete failed with error: ' + err);
1196      }
1197    });
1198  } catch (err) {
1199    console.info('fetch failed, message =', err);
1200  }
1201}
1202```
1203
1204### delete
1205
1206delete(uri: string): Promise&lt;void&gt;;
1207
1208删除媒体文件,删除的文件进入到回收站。
1209
1210**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_AUDIO
1211
1212**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1213
1214**参数:**
1215
1216| 参数名   | 类型                      | 必填 | 说明       |
1217| -------- | ------------------------- | ---- | ---------- |
1218| uri | string | 是   | 媒体文件uri。 |
1219
1220**返回值:**
1221
1222| 类型                                    | 说明              |
1223| --------------------------------------- | ----------------- |
1224| Promise&lt;void&gt;| Promise对象,返回void。 |
1225
1226**错误码:**
1227
1228接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1229
1230| 错误码ID | 错误信息 |
1231| -------- | ---------------------------------------- |
1232| 13900020   | if type uri is not string.         |
1233
1234**示例:**
1235
1236```ts
1237import dataSharePredicates from '@ohos.data.dataSharePredicates';
1238
1239async function example() {
1240  console.info('deleteDemo');
1241  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1242  let fetchOptions: userFileManager.FetchOptions = {
1243    fetchColumns: [],
1244    predicates: predicates
1245  };
1246  try {
1247    const fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
1248    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1249    if (asset == undefined) {
1250      console.error('asset not exist');
1251      return;
1252    }
1253    await mgr.delete(asset.uri);
1254    console.info('delete successfully');
1255  } catch (err) {
1256    console.error('delete failed with error: ' + err);
1257  }
1258}
1259```
1260
1261### getActivePeers
1262
1263getActivePeers(callback: AsyncCallback&lt;Array&lt;PeerInfo&gt;&gt;): void;
1264
1265获取在线对端设备的信息,使用callback方式返回异步结果。
1266
1267**系统能力**:SystemCapability.FileManagement.UserFileManager.DistributedCore
1268
1269**参数:**
1270
1271| 参数名   | 类型                              | 必填 | 说明         |
1272| -------- | --------------------------------- | ---- | ------------ |
1273| callback | AsyncCallback&lt;Array&lt;[PeerInfo](#peerinfo)&gt;&gt; | 是   | 返回在线设备列表。 |
1274
1275**示例:**
1276
1277```ts
1278async function example() {
1279  console.info('getActivePeersDemo');
1280  mgr.getActivePeers((err, devicesInfo) => {
1281    if (devicesInfo != undefined) {
1282      console.log('getActivePeers succeed.');
1283      for (let i = 0; i < devicesInfo.length; i++) {
1284        console.info('get distributed info ' + devicesInfo[i].deviceName + devicesInfo[i].networkId);
1285      }
1286    } else {
1287      console.error('getActivePeers failed. message = ', err);
1288    }
1289  });
1290}
1291```
1292
1293### getActivePeers
1294
1295getActivePeers(): Promise&lt;Array&lt;PeerInfo&gt;&gt;;
1296
1297获取在线对端设备的信息,使用promise方式返回异步结果。
1298
1299**系统能力**:SystemCapability.FileManagement.UserFileManager.DistributedCore
1300
1301**返回值:**
1302
1303| 类型                        | 说明                          |
1304| --------------------------- | ----------------------------- |
1305| Promise&lt;Array&lt;[PeerInfo](#peerinfo)&gt;&gt; | Promise对象,返回在线设备列表。 |
1306
1307**示例:**
1308
1309```ts
1310async function example() {
1311  console.info('getActivePeersDemo');
1312  try {
1313    let devicesInfo: Array<userFileManager.PeerInfo> = await mgr.getActivePeers();
1314    if (devicesInfo != undefined) {
1315      console.log('getActivePeers succeed.');
1316      for (let i = 0; i < devicesInfo.length; i++) {
1317        console.info('get distributed info ' + devicesInfo[i].deviceName + devicesInfo[i].networkId);
1318      }
1319    } else {
1320      console.error('get distributed fail');
1321    }
1322  } catch (err) {
1323    console.error('getActivePeers failed. message = ', err);
1324  }
1325}
1326```
1327
1328### getAllPeers
1329
1330getAllPeers(callback: AsyncCallback&lt;Array&lt;PeerInfo&gt;&gt;): void;
1331
1332获取所有对端设备的信息,使用callback方式返回异步结果。
1333
1334**系统能力**:SystemCapability.FileManagement.UserFileManager.DistributedCore
1335
1336**参数:**
1337
1338| 参数名   | 类型                              | 必填 | 说明         |
1339| -------- | --------------------------------- | ---- | ------------ |
1340| callback | AsyncCallback&lt;Array&lt;[PeerInfo](#peerinfo)&gt;&gt; | 是   | 返回在线设备列表。 |
1341
1342**示例:**
1343
1344```ts
1345async function example() {
1346  console.info('getAllPeersDemo');
1347  mgr.getAllPeers((err, devicesInfo) => {
1348    if (devicesInfo != undefined) {
1349      console.log('getAllPeers succeed.');
1350      for (let i = 0; i < devicesInfo.length; i++) {
1351        console.info('get distributed info ' + devicesInfo[i].deviceName + devicesInfo[i].networkId);
1352      }
1353    } else {
1354      console.error('getAllPeers failed. message = ', err);
1355    }
1356  });
1357}
1358```
1359
1360### getAllPeers
1361
1362getAllPeers(): Promise&lt;Array&lt;PeerInfo&gt;&gt;;
1363
1364获取所有对端设备的信息,使用promise方式返回异步结果。
1365
1366**系统能力**:SystemCapability.FileManagement.UserFileManager.DistributedCore
1367
1368**返回值:**
1369
1370| 类型                        | 说明                          |
1371| --------------------------- | ----------------------------- |
1372| Promise&lt;Array&lt;[PeerInfo](#peerinfo)&gt;&gt; | Promise对象,返回所有设备列表。 |
1373
1374**示例:**
1375
1376```ts
1377async function example() {
1378  console.info('getAllPeersDemo');
1379  try {
1380    let devicesInfo: Array<userFileManager.PeerInfo> = await mgr.getAllPeers();
1381
1382    if (devicesInfo != undefined) {
1383      console.log('getAllPeers succeed.');
1384      for (let i = 0; i < devicesInfo.length; i++) {
1385        console.info('get distributed info ' + devicesInfo[i].deviceName + devicesInfo[i].networkId);
1386      }
1387    } else {
1388      console.error('get distributed fail');
1389    }
1390  } catch (err) {
1391    console.error('getAllPeers failed. message = ', err);
1392  }
1393}
1394```
1395
1396### getPhotoIndex<sup>10+</sup>
1397
1398getPhotoIndex(photoUri: string, albumUri: string, options: FetchOptions, callback: AsyncCallback&lt;number&gt;): void
1399
1400获取相册中图片或视频的位置,使用callback方式返回结果。
1401
1402**系统接口**:此接口为系统接口。
1403
1404**需要权限**:ohos.permission.READ_IMAGEVIDEO
1405
1406**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1407
1408**参数:**
1409
1410| 参数名   | 类型                      | 必填 | 说明       |
1411| -------- | ------------------------- | ---- | ---------- |
1412| photoUri | string | 是   | 所查询的图库资源的uri。 |
1413| albumUri | string | 是   | 相册uri,可以为空字符串,为空字符串时默认查询全部图库资源。   |
1414| options  | [FetchOptions](#fetchoptions)       | 是   |  检索选项,predicates中必须设置一种检索排序方式,不设置或多设置均会导致接口调用异常。      |
1415| callback | AsyncCallback&lt;number&gt;| 是   | callback返回相册中资源的索引。 |
1416
1417**错误码:**
1418
1419接口抛出错误码的详细介绍请参见[通用错误码](../errorcodes/errorcode-universal.md)。
1420
1421| 错误码ID | 错误信息 |
1422| -------- | ---------------------------------------- |
1423| 401   | if parameter is invalid.         |
1424
1425**示例:**
1426
1427```ts
1428import dataSharePredicates from '@ohos.data.dataSharePredicates';
1429
1430async function example() {
1431  try {
1432    console.info('getPhotoIndexDemo');
1433    let predicatesForGetAsset: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1434    let fetchOp: userFileManager.FetchOptions = {
1435      fetchColumns: [],
1436      predicates: predicatesForGetAsset
1437    };
1438    // Obtain the uri of the album
1439    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.FAVORITE, fetchOp);
1440    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
1441    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1442    predicates.orderByAsc(userFileManager.ImageVideoKey.DATE_MODIFIED.toString());
1443    let fetchOptions: userFileManager.FetchOptions = {
1444      fetchColumns: [userFileManager.ImageVideoKey.DATE_MODIFIED.toString()],
1445      predicates: predicates
1446    };
1447    let photoFetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOptions);
1448    let expectIndex = 1;
1449    // Obtain the uri of the second file
1450    let photoAsset: userFileManager.FileAsset = await photoFetchResult.getPositionObject(expectIndex);
1451    mgr.getPhotoIndex(photoAsset.uri, album.albumUri, fetchOptions, (err, index) => {
1452      if (err == undefined) {
1453        console.info(`getPhotoIndex successfully and index is : ${index}`);
1454      } else {
1455        console.info(`getPhotoIndex failed;`);
1456      }
1457    });
1458  } catch (error) {
1459    console.info(`getPhotoIndex failed; error: ${error}`);
1460  }
1461}
1462```
1463
1464### getPhotoIndex<sup>10+</sup>
1465
1466getPhotoIndex(photoUri: string, albumUri: string, options: FetchOptions): Promise&lt;number&gt;
1467
1468获取相册中图片或视频的位置,使用Promise方式返回结果。
1469
1470**系统接口**:此接口为系统接口。
1471
1472**需要权限**:ohos.permission.READ_IMAGEVIDEO
1473
1474**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1475
1476**参数:**
1477
1478| 参数名   | 类型                      | 必填 | 说明       |
1479| -------- | ------------------------- | ---- | ---------- |
1480| photoUri | string | 是   | 所查询的图库资源的uri。 |
1481| albumUri | string | 是   | 相册uri,可以为空字符串,为空字符串时默认查询全部图库资源。   |
1482| options  | [FetchOptions](#fetchoptions)       | 是   |  检索选项,predicates中必须设置一种检索排序方式,不设置或多设置均会导致接口调用异常。      |
1483
1484**返回值:**
1485
1486| 类型                                    | 说明              |
1487| --------------------------------------- | ----------------- |
1488| Promise&lt;number&gt;| 返回相册中资源的索引。 |
1489
1490**错误码:**
1491
1492接口抛出错误码的详细介绍请参见[通用错误码](../errorcodes/errorcode-universal.md)。
1493
1494| 错误码ID | 错误信息 |
1495| -------- | ---------------------------------------- |
1496| 401   | if parameter is invalid.         |
1497
1498**示例:**
1499
1500```ts
1501import dataSharePredicates from '@ohos.data.dataSharePredicates';
1502import { BusinessError } from '@ohos.base';
1503
1504async function example() {
1505  try {
1506    console.info('getPhotoIndexDemo');
1507    let predicatesForGetAsset: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1508    let fetchOp: userFileManager.FetchOptions = {
1509      fetchColumns: [],
1510      predicates: predicatesForGetAsset
1511    };
1512    // Obtain the uri of the album
1513    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.FAVORITE, fetchOp);
1514    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
1515    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1516    predicates.orderByAsc(userFileManager.ImageVideoKey.DATE_MODIFIED.toString());
1517    let fetchOptions: userFileManager.FetchOptions = {
1518      fetchColumns: [userFileManager.ImageVideoKey.DATE_MODIFIED.toString()],
1519      predicates: predicates
1520    };
1521    let photoFetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOptions);
1522    let expectIndex = 1;
1523    // Obtain the uri of the second file
1524    let photoAsset: userFileManager.FileAsset = await photoFetchResult.getPositionObject(expectIndex);
1525    mgr.getPhotoIndex(photoAsset.uri, album.albumUri, fetchOptions).then((index) => {
1526      console.info(`getPhotoIndex successfully and index is : ${index}`);
1527    }).catch((err: BusinessError) => {
1528      console.info(`getPhotoIndex failed; error: ${err}`);
1529    });
1530  } catch (error) {
1531    console.info(`getPhotoIndex failed; error: ${error}`);
1532  }
1533}
1534```
1535
1536### release
1537
1538release(callback: AsyncCallback&lt;void&gt;): void
1539
1540释放UserFileManager实例,使用callback方式返回结果。
1541当后续不需要使用UserFileManager实例中的方法时调用。
1542
1543**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1544
1545**参数:**
1546
1547| 参数名   | 类型                      | 必填 | 说明                 |
1548| -------- | ------------------------- | ---- | -------------------- |
1549| callback | AsyncCallback&lt;void&gt; | 是   | 回调表示成功还是失败。 |
1550
1551**示例:**
1552
1553```ts
1554async function example() {
1555  console.info('releaseDemo');
1556  mgr.release((err) => {
1557    if (err != undefined) {
1558      console.error('release failed. message = ', err);
1559    } else {
1560      console.info('release ok.');
1561    }
1562  });
1563}
1564```
1565
1566### release
1567
1568release(): Promise&lt;void&gt;
1569
1570释放UserFileManager实例,使用Promise方式返回结果。
1571当后续不需要使用UserFileManager 实例中的方法时调用。
1572
1573**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1574
1575**返回值:**
1576
1577| 类型                | 说明                              |
1578| ------------------- | --------------------------------- |
1579| Promise&lt;void&gt; | Promise对象,返回void。 |
1580
1581**示例:**
1582
1583```ts
1584async function example() {
1585  console.info('releaseDemo');
1586  try {
1587    await mgr.release();
1588    console.info('release ok.');
1589  } catch (err) {
1590    console.error('release failed. message = ', err);
1591  }
1592}
1593```
1594
1595### on<sup>10+</sup>
1596
1597on(uri: string, forSubUri: boolean, callback: Callback&lt;ChangeData&gt;) : void
1598
1599对指定uri注册监听,使用callback方式返回异步结果。
1600
1601**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1602
1603**参数:**
1604
1605| 参数名    | 类型                                        | 必填 | 说明                                                         |
1606| --------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
1607| uri       | string                                      | 是   | FileAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri10)的值。 |
1608| forSubUri | boolean                                     | 是   | 是否模糊监听,uri为相册uri时,forSubUri 为true能监听到相册中文件的变化,如果是false只能监听相册本身变化。uri为fileAsset时,forSubUri 为true、false没有区别。uri为DefaultChangeUri时,forSubUri必须为true,如果为false将找不到该uri,收不到任何消息。 |
1609| callback  | Callback&lt;[ChangeData](#changedata10)&gt; | 是   | 返回要监听的[ChangeData](#changedata10)。注:uri可以注册多个不同的callback监听,[off<sup>10+</sup>](#off10)可以关闭该uri所有监听,也可以关闭指定callback的监听。 |
1610
1611**错误码:**
1612
1613接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1614
1615| 错误码ID | 错误信息 |
1616| -------- | ---------------------------------------- |
1617| 13900020   | if parameter is invalid.         |
1618
1619**示例:**
1620
1621```ts
1622import dataSharePredicates from '@ohos.data.dataSharePredicates';
1623
1624async function example() {
1625  console.info('onDemo');
1626  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1627  let fetchOptions: userFileManager.FetchOptions = {
1628    fetchColumns: [],
1629    predicates: predicates
1630  };
1631  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
1632  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1633  if (fileAsset != undefined) {
1634    console.info('fileAsset.displayName : ' + fileAsset.displayName);
1635  }
1636  let onCallback1 = (changeData: userFileManager.ChangeData) => {
1637      console.info('onCallback1 success, changData: ' + JSON.stringify(changeData));
1638    //file had changed, do something
1639  }
1640  let onCallback2 = (changeData: userFileManager.ChangeData) => {
1641      console.info('onCallback2 success, changData: ' + JSON.stringify(changeData));
1642    //file had changed, do something
1643  }
1644  // 注册onCallback1监听
1645  mgr.on(fileAsset.uri, false, onCallback1);
1646  // 注册onCallback2监听
1647  mgr.on(fileAsset.uri, false, onCallback2);
1648
1649  fileAsset.favorite(true, (err) => {
1650    if (err == undefined) {
1651      console.info('favorite successfully');
1652    } else {
1653      console.error('favorite failed with error:' + err);
1654    }
1655  });
1656}
1657```
1658
1659### off<sup>10+</sup>
1660
1661 off(uri: string, callback?: Callback&lt;ChangeData&gt;): void
1662
1663取消对指定uri的监听,一个uri可以注册多个监听,存在多个callback监听时,可以取消指定注册的callback的监听;不指定callback时解除该uri的所有监听。
1664
1665**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1666
1667**参数:**
1668
1669| 参数名   | 类型                                        | 必填 | 说明                                                         |
1670| -------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
1671| uri      | string                                      | 是   | FileAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri10)的值。 |
1672| callback | Callback&lt;[ChangeData](#changedata10)&gt; | 否   | 取消[on<sup>10+</sup>](#on10)注册时的callback的监听,不填时,取消该uri的所有监听。注:off指定注册的callback后不会进入此回调。 |
1673
1674**错误码:**
1675
1676接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1677
1678| 错误码ID | 错误信息 |
1679| -------- | ---------------------------------------- |
1680| 13900020   | if parameter is invalid.         |
1681
1682**示例:**
1683
1684```ts
1685import dataSharePredicates from '@ohos.data.dataSharePredicates';
1686
1687async function example() {
1688  console.info('offDemo');
1689  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1690  let fetchOptions: userFileManager.FetchOptions = {
1691    fetchColumns: [],
1692    predicates: predicates
1693  };
1694  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
1695  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1696  if (fileAsset != undefined) {
1697    console.info('fileAsset.displayName : ' + fileAsset.displayName);
1698  }
1699  let onCallback1 = (changeData: userFileManager.ChangeData) => {
1700    console.info('onCallback1 on');
1701  }
1702  let onCallback2 = (changeData: userFileManager.ChangeData) => {
1703    console.info('onCallback2 on');
1704  }
1705  // 注册onCallback1监听
1706  mgr.on(fileAsset.uri, false, onCallback1);
1707  // 注册onCallback2监听
1708  mgr.on(fileAsset.uri, false, onCallback2);
1709  // 关闭onCallback1监听,onCallback2 继续监听
1710  mgr.off(fileAsset.uri, onCallback1);
1711  fileAsset.favorite(true, (err) => {
1712    if (err == undefined) {
1713      console.info('favorite successfully');
1714    } else {
1715      console.error('favorite failed with error:' + err);
1716    }
1717  });
1718}
1719```
1720
1721### on
1722
1723on(type: ChangeEvent, callback: Callback&lt;void&gt;): void
1724
1725打开文件管理库变更通知,使用callback方式返回异步结果。
1726
1727此接口即将废弃,请使用[on<sup>10+</sup>](#on10)的新接口。
1728
1729**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1730
1731**参数:**
1732
1733| 参数名   | 类型                 | 必填 | 说明                                                         |
1734| -------- | -------------------- | ---- | ------------------------------------------------------------ |
1735| type     | [ChangeEvent](#changeevent)               | 是   | 媒体类型 <br/>'deviceChange':&nbsp;注册设备变更 <br/>'albumChange':&nbsp;相册变更<br/>'imageChange':&nbsp;图片文件变更<br/>'audioChange': &nbsp;音频文件变更<br/>'videoChange':  &nbsp;视频文件变更<br/>'remoteFileChange':&nbsp;注册设备上文件变更 |
1736| callback | Callback&lt;void&gt; | 是   | callback返回void                                                   |
1737
1738**示例:**
1739
1740```ts
1741async function example() {
1742  console.info('onDemo');
1743  let count = 0;
1744  mgr.on('imageChange', () => {
1745    count++;
1746    // image file had changed, do something
1747  });
1748  try {
1749    let testFileName: string = 'testFile' + Date.now() + '.jpg';
1750    let fileAsset: userFileManager.FileAsset = await mgr.createPhotoAsset(testFileName);
1751    console.info('createPhotoAsset file displayName' + fileAsset.displayName);
1752    console.info('createPhotoAsset successfully');
1753  } catch (err) {
1754    console.error('createPhotoAsset failed, message = ' + err);
1755  }
1756  //sleep 1s
1757  if (count > 0) {
1758    console.info('onDemo success');
1759  } else {
1760    console.error('onDemo fail');
1761  }
1762  mgr.off('imageChange', () => {
1763    // stop listening success
1764  });
1765}
1766```
1767
1768### off
1769
1770off(type: ChangeEvent, callback?: Callback&lt;void&gt;): void
1771
1772关闭文件管理库变更通知,使用callback方式返回异步结果。
1773
1774此接口即将废弃,请使用[off<sup>10+</sup>](#off10)的新接口。
1775
1776**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1777
1778**参数:**
1779
1780| 参数名   | 类型                 | 必填 | 说明                                                         |
1781| -------- | -------------------- | ---- | ------------------------------------------------------------ |
1782| type     | [ChangeEvent](#changeevent)               | 是   | 媒体类型 <br/>'deviceChange':&nbsp;注册设备变更 <br/>'albumChange':&nbsp;相册变更<br/>'imageChange':&nbsp;图片文件变更<br/>'audioChange': &nbsp;音频文件变更<br/>'videoChange':  &nbsp;视频文件变更<br/>'remoteFileChange':&nbsp;注册设备上文件变更。 |
1783| callback | Callback&lt;void&gt; | 否   | callback返回void。                                                   |
1784
1785**示例:**
1786
1787```ts
1788async function example() {
1789  console.info('offDemo');
1790  let count = 0;
1791  mgr.on('imageChange', () => {
1792    count++;
1793    // image file had changed, do something
1794  });
1795
1796  mgr.off('imageChange', () => {
1797    // stop listening success
1798  });
1799
1800  try {
1801    let testFileName: string = 'testFile' + Date.now() + '.jpg';
1802    let fileAsset: userFileManager.FileAsset = await mgr.createPhotoAsset(testFileName);
1803    console.info('createPhotoAsset file displayName' + fileAsset.displayName);
1804    console.info('createPhotoAsset successfully');
1805  } catch (err) {
1806    console.error('createPhotoAsset failed, message = ' + err);
1807  }
1808  //sleep 1s
1809  if (count == 0) {
1810    console.info('offDemo success');
1811  } else {
1812    console.error('offDemo fail');
1813  }
1814}
1815```
1816
1817## FileAsset
1818
1819提供封装文件属性的方法。
1820
1821### 属性
1822
1823**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1824
1825| 名称                      | 类型                     | 可读 | 可写 | 说明                                                   |
1826| ------------------------- | ------------------------ | ---- | ---- | ------------------------------------------------------ |
1827| uri                       | string                   | 是   | 否   | 媒体文件资源uri(如:file://media/Photo/1/IMG_datetime_0001/displayName.jpg),详情参见用户文件uri介绍中的[媒体文件uri](../../file-management/user-file-uri-intro.md#媒体文件uri)。         |
1828| fileType   | [FileType](#filetype) | 是   | 否   | 媒体文件类型                                               |
1829| displayName               | string                   | 是   | 是   | 显示文件名,包含后缀名。                                 |
1830
1831### get
1832
1833get(member: string): MemberType;
1834
1835获取FileAsset成员参数。
1836
1837**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1838
1839**参数:**
1840
1841| 参数名      | 类型                        | 必填   | 说明    |
1842| -------- | ------------------------- | ---- | ----- |
1843| member | string | 是    | 成员参数名称例如:ImageVideoKey.DISPLAY_NAME。在get时,除了uri、photoType和displayName三个属性之外,其他的属性都需要在fetchColumns中填入需要get的PhotoKeys,例如:get title属性fetchColumns: ['title']。 |
1844
1845**示例:**
1846
1847```ts
1848import dataSharePredicates from '@ohos.data.dataSharePredicates';
1849
1850async function example() {
1851  console.info('fileAssetGetDemo');
1852  try {
1853    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1854    let fetchOption: userFileManager.FetchOptions = {
1855      fetchColumns: ['title'],
1856      predicates: predicates
1857    };
1858    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
1859    let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1860    let title: userFileManager.ImageVideoKey = userFileManager.ImageVideoKey.TITLE;
1861    let fileAssetTitle: userFileManager.MemberType = fileAsset.get(title.toString());
1862    console.info('fileAsset Get fileAssetTitle = ', fileAssetTitle);
1863  } catch (err) {
1864    console.error('release failed. message = ', err);
1865  }
1866}
1867```
1868
1869### set
1870
1871set(member: string, value: string): void;
1872
1873设置FileAsset成员参数。
1874
1875**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1876
1877**参数:**
1878
1879| 参数名      | 类型                        | 必填   | 说明    |
1880| -------- | ------------------------- | ---- | ----- |
1881| member | string | 是    | 成员参数名称例如:ImageVideoKey.DISPLAY_NAME。 |
1882| value | string | 是    | 设置成员参数名称,只能修改DISPLAY_NAME和TITLE的值。 |
1883
1884**示例:**
1885
1886```ts
1887import dataSharePredicates from '@ohos.data.dataSharePredicates';
1888
1889async function example() {
1890  console.info('fileAssetSetDemo');
1891  try {
1892    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1893    let fetchOption: userFileManager.FetchOptions = {
1894      fetchColumns: [],
1895      predicates: predicates
1896    };
1897    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
1898    let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1899    let displayName: string = userFileManager.ImageVideoKey.DISPLAY_NAME.toString();
1900    fileAsset.set(displayName, 'newDisplayName1');
1901  } catch (err) {
1902    console.error('release failed. message = ', err);
1903  }
1904}
1905```
1906
1907### commitModify
1908
1909commitModify(callback: AsyncCallback&lt;void&gt;): void
1910
1911修改文件的元数据,使用callback方式返回异步结果。
1912
1913**需要权限**:ohos.permission.WRITE_IMAGEVIDEOohos.permission.WRITE_AUDIO
1914
1915**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1916
1917**参数:**
1918
1919| 参数名      | 类型                        | 必填   | 说明    |
1920| -------- | ------------------------- | ---- | ----- |
1921| callback | AsyncCallback&lt;void&gt; | 是    | callback返回void。 |
1922
1923**示例:**
1924
1925```ts
1926import dataSharePredicates from '@ohos.data.dataSharePredicates';
1927
1928async function example() {
1929  console.info('commitModifyDemo');
1930  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1931  let fetchOption: userFileManager.FetchOptions = {
1932    fetchColumns: [],
1933    predicates: predicates
1934  };
1935  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
1936  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1937  let displayName: string = userFileManager.ImageVideoKey.DISPLAY_NAME.toString();
1938  let fileAssetDisplayName: userFileManager.MemberType = fileAsset.get(displayName);
1939  console.info('fileAsset get fileAssetDisplayName = ', fileAssetDisplayName);
1940  let newFileAssetDisplayName = 'new' + fileAssetDisplayName;
1941  console.info('fileAsset newFileAssetDisplayName = ', newFileAssetDisplayName);
1942  fileAsset.set(displayName, newFileAssetDisplayName);
1943  fileAsset.commitModify((err) => {
1944    if (err == undefined) {
1945      let commitModifyDisplayName = fileAsset.get(displayName);
1946      console.info('fileAsset commitModify successfully, commitModifyDisplayName = ', commitModifyDisplayName);
1947    } else {
1948      console.error('commitModify failed, message =', err);
1949    }
1950  });
1951}
1952```
1953
1954### commitModify
1955
1956commitModify(): Promise&lt;void&gt;
1957
1958修改文件的元数据,使用promise方式返回异步结果。
1959
1960**需要权限**:ohos.permission.WRITE_IMAGEVIDEOohos.permission.WRITE_AUDIO
1961
1962**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
1963
1964**返回值:**
1965
1966| 类型                  | 说明         |
1967| ------------------- | ---------- |
1968| Promise&lt;void&gt; | Promise对象,返回void。 |
1969
1970**示例:**
1971
1972```ts
1973import dataSharePredicates from '@ohos.data.dataSharePredicates';
1974
1975async function example() {
1976  console.info('commitModifyDemo');
1977  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1978  let fetchOption: userFileManager.FetchOptions = {
1979    fetchColumns: [],
1980    predicates: predicates
1981  };
1982  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
1983  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
1984  let displayName = userFileManager.ImageVideoKey.DISPLAY_NAME.toString();
1985  let fileAssetDisplayName: userFileManager.MemberType = fileAsset.get(displayName);
1986  console.info('fileAsset get fileAssetDisplayName = ', fileAssetDisplayName);
1987  let newFileAssetDisplayName = 'new' + fileAssetDisplayName;
1988  console.info('fileAsset newFileAssetDisplayName = ', newFileAssetDisplayName);
1989  fileAsset.set(displayName, newFileAssetDisplayName);
1990  try {
1991    await fileAsset.commitModify();
1992    let commitModifyDisplayName = fileAsset.get(displayName);
1993    console.info('fileAsset commitModify successfully, commitModifyDisplayName = ', commitModifyDisplayName);
1994  } catch (err) {
1995    console.error('commitModify failed. message = ', err);
1996  }
1997}
1998```
1999
2000### open
2001
2002open(mode: string, callback: AsyncCallback&lt;number&gt;): void
2003
2004打开当前文件,使用callback方式返回异步结果。
2005
2006**注意**:当前写操作是互斥的操作,写操作完成后需要调用close进行释放。
2007
2008**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_IMAGEVIDEOohos.permission.WRITE_AUDIO
2009
2010**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2011
2012**参数:**
2013
2014| 参数名      | 类型                          | 必填   | 说明                                  |
2015| -------- | --------------------------- | ---- | ----------------------------------- |
2016| mode     | string                      | 是    | 打开文件方式,如:'r'(只读), 'w'(只写), 'rw'(读写)。 |
2017| callback | AsyncCallback&lt;number&gt; | 是    | callback返回文件描述符。                            |
2018
2019**示例:**
2020
2021```ts
2022async function example() {
2023  console.info('openDemo');
2024   let testFileName: string = 'testFile' + Date.now() + '.jpg';
2025  const fileAsset: userFileManager.FileAsset = await mgr.createPhotoAsset(testFileName);
2026  fileAsset.open('rw', (err, fd) => {
2027    if (fd != undefined) {
2028      console.info('File fd' + fd);
2029      fileAsset.close(fd);
2030    } else {
2031      console.error('File err' + err);
2032    }
2033  });
2034}
2035```
2036
2037### open
2038
2039open(mode: string): Promise&lt;number&gt;
2040
2041打开当前文件,使用promise方式返回异步结果。
2042
2043**注意**:当前写操作是互斥的操作,写操作完成后需要调用close进行释放。
2044
2045**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_IMAGEVIDEOohos.permission.WRITE_AUDIO
2046
2047**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2048
2049**参数:**
2050
2051| 参数名  | 类型     | 必填   | 说明                                  |
2052| ---- | ------ | ---- | ----------------------------------- |
2053| mode | string | 是    | 打开文件方式,如:'r'(只读), 'w'(只写), 'rw'(读写)。 |
2054
2055**返回值:**
2056
2057| 类型                    | 说明            |
2058| --------------------- | ------------- |
2059| Promise&lt;number&gt; | Promise对象,返回文件描述符。 |
2060
2061**示例:**
2062
2063```ts
2064async function example() {
2065  console.info('openDemo');
2066  try {
2067    let testFileName: string = 'testFile' + Date.now() + '.jpg';
2068    const fileAsset: userFileManager.FileAsset = await mgr.createPhotoAsset(testFileName);
2069    let fd: number = await fileAsset.open('rw');
2070    if (fd != undefined) {
2071      console.info('File fd' + fd);
2072      fileAsset.close(fd);
2073    } else {
2074      console.error(' open File fail');
2075    }
2076  } catch (err) {
2077    console.error('open Demo err' + err);
2078  }
2079}
2080```
2081
2082### close
2083
2084close(fd: number, callback: AsyncCallback&lt;void&gt;): void
2085
2086关闭当前文件,使用callback方式返回异步结果。
2087
2088**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2089
2090**参数:**
2091
2092| 参数名      | 类型                        | 必填   | 说明    |
2093| -------- | ------------------------- | ---- | ----- |
2094| fd       | number                    | 是    | 文件描述符。 |
2095| callback | AsyncCallback&lt;void&gt; | 是    | callback返回void。 |
2096
2097**示例:**
2098
2099```ts
2100import dataSharePredicates from '@ohos.data.dataSharePredicates';
2101
2102async function example() {
2103  console.info('closeDemo');
2104  try {
2105    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2106    let fetchOption: userFileManager.FetchOptions = {
2107      fetchColumns: [],
2108      predicates: predicates
2109    };
2110    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2111    const fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2112    let fd: number = await fileAsset.open('rw');
2113    console.info('file fd', fd);
2114    fileAsset.close(fd, (err) => {
2115      if (err == undefined) {
2116        console.info('asset close succeed.');
2117      } else {
2118        console.error('close failed, message = ' + err);
2119      }
2120    });
2121  } catch (err) {
2122    console.error('close failed, message = ' + err);
2123  }
2124}
2125```
2126
2127### close
2128
2129close(fd: number): Promise&lt;void&gt;
2130
2131关闭当前文件,使用promise方式返回异步结果。
2132
2133**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2134
2135**参数:**
2136
2137| 参数名  | 类型     | 必填   | 说明    |
2138| ---- | ------ | ---- | ----- |
2139| fd   | number | 是    | 文件描述符。 |
2140
2141**返回值:**
2142
2143| 类型                  | 说明         |
2144| ------------------- | ---------- |
2145| Promise&lt;void&gt; | Promise对象,返回void。 |
2146
2147**示例:**
2148
2149```ts
2150import dataSharePredicates from '@ohos.data.dataSharePredicates';
2151
2152async function example() {
2153  console.info('closeDemo');
2154  try {
2155    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2156    let fetchOption: userFileManager.FetchOptions = {
2157      fetchColumns: [],
2158      predicates: predicates
2159    };
2160    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2161    const asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2162    let fd: number = await asset.open('rw');
2163    console.info('file fd', fd);
2164    await asset.close(fd);
2165    console.info('asset close succeed.');
2166  } catch (err) {
2167    console.error('close failed, message = ' + err);
2168  }
2169}
2170```
2171
2172### getThumbnail
2173
2174getThumbnail(callback: AsyncCallback&lt;image.PixelMap&gt;): void
2175
2176获取文件的缩略图,使用callback方式返回异步结果。
2177
2178**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.READ_AUDIO
2179
2180**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2181
2182**参数:**
2183
2184| 参数名      | 类型                                  | 必填   | 说明               |
2185| -------- | ----------------------------------- | ---- | ---------------- |
2186| callback | AsyncCallback&lt;[image.PixelMap](js-apis-image.md#pixelmap7)&gt; | 是    | callback返回缩略图的PixelMap。 |
2187
2188**示例:**
2189
2190```ts
2191import dataSharePredicates from '@ohos.data.dataSharePredicates';
2192
2193async function example() {
2194  console.info('getThumbnailDemo');
2195  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2196  let fetchOption: userFileManager.FetchOptions = {
2197    fetchColumns: [],
2198    predicates: predicates
2199  };
2200  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2201  let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2202  console.info('asset displayName = ', asset.displayName);
2203  asset.getThumbnail((err, pixelMap) => {
2204    if (err == undefined) {
2205      console.info('getThumbnail successful ' + pixelMap);
2206    } else {
2207      console.error('getThumbnail fail', err);
2208    }
2209  });
2210}
2211```
2212
2213### getThumbnail
2214
2215getThumbnail(size: image.Size, callback: AsyncCallback&lt;image.PixelMap&gt;): void
2216
2217获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。
2218
2219**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.READ_AUDIO
2220
2221**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2222
2223**参数:**
2224
2225| 参数名      | 类型                                  | 必填   | 说明               |
2226| -------- | ----------------------------------- | ---- | ---------------- |
2227| size     | [image.Size](js-apis-image.md#size) | 是    | 缩略图尺寸。            |
2228| callback | AsyncCallback&lt;[image.PixelMap](js-apis-image.md#pixelmap7)&gt; | 是    | callback返回缩略图的PixelMap。 |
2229
2230**示例:**
2231
2232```ts
2233import dataSharePredicates from '@ohos.data.dataSharePredicates';
2234import image from '@ohos.multimedia.image';
2235
2236async function example() {
2237  console.info('getThumbnailDemo');
2238  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2239  let fetchOption: userFileManager.FetchOptions = {
2240    fetchColumns: [],
2241    predicates: predicates
2242  };
2243  let size: image.Size = { width: 720, height: 720 };
2244  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2245  const asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2246  console.info('asset displayName = ', asset.displayName);
2247  asset.getThumbnail(size, (err, pixelMap) => {
2248    if (err == undefined) {
2249      console.info('getThumbnail successful ' + pixelMap);
2250    } else {
2251      console.error('getThumbnail fail', err);
2252    }
2253  });
2254}
2255```
2256
2257### getThumbnail
2258
2259getThumbnail(size?: image.Size): Promise&lt;image.PixelMap&gt;
2260
2261获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。
2262
2263**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.READ_AUDIO
2264
2265**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2266
2267**参数:**
2268
2269| 参数名  | 类型             | 必填   | 说明    |
2270| ---- | -------------- | ---- | ----- |
2271| size | [image.Size](js-apis-image.md#size) | 否    | 缩略图尺寸。 |
2272
2273**返回值:**
2274
2275| 类型                            | 说明                    |
2276| ----------------------------- | --------------------- |
2277| Promise&lt;[image.PixelMap](js-apis-image.md#pixelmap7)&gt; | Promise对象,返回缩略图的PixelMap。 |
2278
2279**示例:**
2280
2281```ts
2282import dataSharePredicates from '@ohos.data.dataSharePredicates';
2283import image from '@ohos.multimedia.image';
2284import { BusinessError } from '@ohos.base';
2285
2286async function example() {
2287  console.info('getThumbnailDemo');
2288  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2289  let fetchOption: userFileManager.FetchOptions = {
2290    fetchColumns: [],
2291    predicates: predicates
2292  };
2293  let size: image.Size = { width: 720, height: 720 };
2294  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2295  const asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2296  console.info('asset displayName = ', asset.displayName);
2297  asset.getThumbnail(size).then((pixelMap) => {
2298    console.info('getThumbnail successful ' + pixelMap);
2299  }).catch((err: BusinessError) => {
2300    console.error('getThumbnail fail' + err);
2301  });
2302}
2303```
2304
2305### favorite
2306
2307favorite(isFavorite: boolean, callback: AsyncCallback&lt;void&gt;): void
2308
2309将文件设置为收藏文件,使用callback方式返回异步结果。
2310
2311**需要权限**:ohos.permission.WRITE_IMAGEVIDEOohos.permission.WRITE_AUDIO
2312
2313**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2314
2315**参数:**
2316
2317| 参数名        | 类型                        | 必填   | 说明                                 |
2318| ---------- | ------------------------- | ---- | ---------------------------------- |
2319| isFavorite | boolean                   | 是    | 是否设置为收藏文件, true:设置为收藏文件,false:取消收藏。 |
2320| callback   | AsyncCallback&lt;void&gt; | 是    | callback返回void。                              |
2321
2322**示例:**
2323
2324```ts
2325import dataSharePredicates from '@ohos.data.dataSharePredicates';
2326
2327async function example() {
2328  console.info('favoriteDemo');
2329  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2330  let fetchOption: userFileManager.FetchOptions = {
2331    fetchColumns: [],
2332    predicates: predicates
2333  };
2334  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2335  const asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2336  asset.favorite(true, (err) => {
2337    if (err == undefined) {
2338      console.info('favorite successfully');
2339    } else {
2340      console.error('favorite failed with error:' + err);
2341    }
2342  });
2343}
2344```
2345
2346### favorite
2347
2348favorite(isFavorite: boolean): Promise&lt;void&gt;
2349
2350将文件设置为收藏文件,使用promise方式返回异步结果。
2351
2352**需要权限**:ohos.permission.WRITE_IMAGEVIDEOohos.permission.WRITE_AUDIO
2353
2354**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2355
2356**参数:**
2357
2358| 参数名        | 类型      | 必填   | 说明                                 |
2359| ---------- | ------- | ---- | ---------------------------------- |
2360| isFavorite | boolean | 是    | 是否设置为收藏文件, true:设置为收藏文件,false:取消收藏。 |
2361
2362**返回值:**
2363
2364| 类型                  | 说明         |
2365| ------------------- | ---------- |
2366| Promise&lt;void&gt; | Promise对象,返回void。 |
2367
2368**示例:**
2369
2370```ts
2371import dataSharePredicates from '@ohos.data.dataSharePredicates';
2372import { BusinessError } from '@ohos.base';
2373
2374async function example() {
2375  console.info('favoriteDemo');
2376  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2377  let fetchOption: userFileManager.FetchOptions = {
2378    fetchColumns: [],
2379    predicates: predicates
2380  };
2381  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2382  const asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2383  asset.favorite(true).then(() => {
2384    console.info('favorite successfully');
2385  }).catch((err: BusinessError) => {
2386    console.error('favorite failed with error:' + err);
2387  });
2388}
2389```
2390
2391### setHidden<sup>10+</sup>
2392
2393setHidden(hiddenState: boolean, callback: AsyncCallback&lt;void&gt;): void
2394
2395将文件设置为隐私文件,使用callback方式返回异步结果。
2396
2397隐私文件存在隐私相册中,对三方应用不开放,用户通过隐私相册去获取隐私文件后可以通过设置hiddenState为false来从隐私相册中移除。
2398
2399**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2400
2401**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2402
2403**参数:**
2404
2405| 参数名        | 类型                        | 必填   | 说明                                 |
2406| ---------- | ------------------------- | ---- | ---------------------------------- |
2407| hiddenState | boolean                   | 是    | 是否设置为隐藏文件,true:将文件资产放入隐藏相册;false:从隐藏相册中恢复。 |
2408| callback   | AsyncCallback&lt;void&gt; | 是    | callback返回void。                              |
2409
2410**错误码:**
2411
2412接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)和[通用错误码](../errorcodes/errorcode-universal.md)。
2413
2414| 错误码ID | 错误信息 |
2415| -------- | ---------------------------------------- |
2416| 202   | Called by non-system application.                |
2417| 13900020   | if parameter is invalid.         |
2418
2419**示例:**
2420
2421```ts
2422import dataSharePredicates from '@ohos.data.dataSharePredicates';
2423
2424async function example() {
2425  console.info('setHiddenDemo');
2426  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2427  let fetchOption: userFileManager.FetchOptions = {
2428    fetchColumns: [],
2429    predicates: predicates
2430  };
2431  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2432  const asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2433  asset.setHidden(true, (err) => {
2434    if (err == undefined) {
2435      console.info('setHidden successfully');
2436    } else {
2437      console.error('setHidden failed with error:' + err);
2438    }
2439  });
2440}
2441```
2442
2443### setHidden<sup>10+</sup>
2444
2445setHidden(hiddenState: boolean): Promise&lt;void&gt;
2446
2447将文件设置为隐私文件,使用promise方式返回异步结果。
2448
2449隐私文件存在隐私相册中,对三方应用不开放,用户通过隐私相册去获取隐私文件后可以通过设置hiddenState为false来从隐私相册中移除。
2450
2451**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2452
2453**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2454
2455**参数:**
2456
2457| 参数名        | 类型      | 必填   | 说明                                 |
2458| ---------- | ------- | ---- | ---------------------------------- |
2459| hiddenState | boolean | 是    | 是否设置为隐藏文件,true:将文件资产放入隐藏相册;false:从隐藏相册中恢复。 |
2460
2461**返回值:**
2462
2463| 类型                  | 说明         |
2464| ------------------- | ---------- |
2465| Promise&lt;void&gt; | Promise对象,返回void。 |
2466
2467**错误码:**
2468
2469接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)和[通用错误码](../errorcodes/errorcode-universal.md)。
2470
2471| 错误码ID | 错误信息 |
2472| -------- | ---------------------------------------- |
2473| 202   | Called by non-system application.                |
2474| 13900020   | if parameter is invalid.         |
2475
2476**示例:**
2477
2478```ts
2479import dataSharePredicates from '@ohos.data.dataSharePredicates';
2480import { BusinessError } from '@ohos.base';
2481
2482async function example() {
2483  // 示例代码为将文件从隐藏相册中恢复,需要先在隐藏相册预置资源
2484  console.info('setHiddenDemo');
2485  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2486  let fetchOption: userFileManager.FetchOptions = {
2487    fetchColumns: [],
2488    predicates: predicates
2489  };
2490  let albumList: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.HIDDEN);
2491  const album: userFileManager.Album = await albumList.getFirstObject();
2492  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOption);
2493  const asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2494  asset.setHidden(false).then(() => {
2495    console.info('setHidden successfully');
2496  }).catch((err: BusinessError) => {
2497    console.error('setHidden failed with error:' + err);
2498  });
2499}
2500```
2501
2502### getExif<sup>10+</sup>
2503
2504getExif(): Promise&lt;string&gt;
2505
2506返回jpg格式图片Exif标签组成的json格式的字符串,该方法使用Promise方式返回结果。
2507
2508**注意**:此接口返回的是exif标签组成的json格式的字符串,完整exif信息由all_exif与[ImageVideoKey.USER_COMMENT](#imagevideokey)组成,fetchColumns需要传入这两个字段。
2509
2510**系统接口**:此接口为系统接口。
2511
2512**需要权限**:ohos.permission.READ_IMAGEVIDEO
2513
2514**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2515
2516**返回值:**
2517
2518| 类型                                    | 说明              |
2519| --------------------------------------- | ----------------- |
2520| Promise&lt;string&gt; | 返回exif标签组成的json格式的字符串。 |
2521
2522**支持Exif标签列表**:
2523
2524Exif标签的详细信息请参考[image.PropertyKey](js-apis-image.md#propertykey7)。
2525
2526| 标签key值                                    | 标签说明              |
2527| --------------------------------------- | ----------------- |
2528| BitsPerSample | 每个像素比特数 |
2529| Orientation | 图像方向 |
2530| ImageLength | 图像长度 |
2531| ImageWidth | 图像宽度 |
2532| GPSLatitude | GPS纬度 |
2533| GPSLongitude | GPS经度 |
2534| GPSLatitudeRef | 经度引用,例如W或E |
2535| GPSLongitudeRef | 纬度引用,例如N或S |
2536| DateTimeOriginal | 拍摄时间 |
2537| ExposureTime | 曝光时间 |
2538| SceneType | 场景类型 |
2539| ISOSpeedRatings | ISO感光度分值 |
2540| FNumber | 光圈F值 |
2541| DateTime | 修改时间 |
2542| GPSTimeStamp | GPS时间戳 |
2543| GPSDateStamp | GPS日期戳 |
2544| ImageDescription | 图像描述 |
2545| Make | 制造商 |
2546| MakeNote | 制造商 |
2547| Model | 型号 |
2548| PhotoMode | 拍摄模式 |
2549| SensitivityType | 感光类型 |
2550| StandardOutputSensitivity | 标准输出感光度 |
2551| RecommendedExposureIndex | 推荐曝光指数 |
2552| ApertureValue | 光圈 |
2553| MeteringMode | 测光模式 |
2554| LightSource | 光源 |
2555| Flash | 闪光灯 |
2556| FocalLength | 镜头焦距 |
2557| UserComment | 用户注释 |
2558| PixelXDimension | 有效图像宽度 |
2559| PixelYDimension | 有效图像高度 |
2560| WhiteBalance | 白平衡 |
2561| FocalLengthIn35mmFilm | 35mm等效焦距 |
2562| ExposureBiasValue | 曝光补偿 |
2563
2564**示例:**
2565
2566```ts
2567import dataSharePredicates from '@ohos.data.dataSharePredicates';
2568
2569async function example() {
2570  try {
2571    console.info('getExifDemo');
2572    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2573    predicates.isNotNull('all_exif')
2574    let fetchOptions: userFileManager.FetchOptions = {
2575      fetchColumns: ['all_exif', userFileManager.ImageVideoKey.USER_COMMENT.toString()],
2576      predicates: predicates
2577    };
2578    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
2579    let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2580    console.info('getExifDemo fileAsset displayName: ' + JSON.stringify(fileAsset.displayName));
2581    let exifMessage: string = await fileAsset.getExif();
2582    let userCommentKey: string = 'UserComment';
2583    let userComment: string = JSON.stringify(JSON.parse(exifMessage), [userCommentKey]);
2584    console.info('getExifDemo userComment: ' + JSON.stringify(userComment));
2585    fetchResult.close();
2586  } catch (err) {
2587    console.error('getExifDemoCallback failed with error: ' + err);
2588  }
2589}
2590```
2591
2592### getExif<sup>10+</sup>
2593
2594getExif(callback: AsyncCallback&lt;string&gt;): void
2595
2596返回jpg格式图片Exif标签组成的json格式的字符串,该方法使用Promise方式返回结果。
2597
2598**注意**:此接口返回的是exif标签组成的json格式的字符串,完整exif信息由all_exif与[ImageVideoKey.USER_COMMENT](#imagevideokey)组成,fetchColumns需要传入这两个字段。
2599
2600**系统接口**:此接口为系统接口。
2601
2602**需要权限**:ohos.permission.READ_IMAGEVIDEO
2603
2604**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2605
2606**参数:**
2607
2608| 参数名   | 类型                      | 必填 | 说明       |
2609| -------- | ------------------------- | ---- | ---------- |
2610| callback | AsyncCallback&lt;string&gt; | 是   | 返回exif标签组成的json格式的字符串。 |
2611
2612**支持Exif标签列表**:
2613
2614Exif标签的详细信息请参考[image.PropertyKey](js-apis-image.md#propertykey7)。
2615
2616| 标签key值                                    | 标签说明              |
2617| --------------------------------------- | ----------------- |
2618| BitsPerSample | 每个像素比特数 |
2619| Orientation | 图像方向 |
2620| ImageLength | 图像长度 |
2621| ImageWidth | 图像宽度 |
2622| GPSLatitude | GPS纬度 |
2623| GPSLongitude | GPS经度 |
2624| GPSLatitudeRef | 经度引用,例如W或E |
2625| GPSLongitudeRef | 纬度引用,例如N或S |
2626| DateTimeOriginal | 拍摄时间 |
2627| ExposureTime | 曝光时间 |
2628| SceneType | 场景类型 |
2629| ISOSpeedRatings | ISO感光度分值 |
2630| FNumber | 光圈F值 |
2631| DateTime | 修改时间 |
2632| GPSTimeStamp | GPS时间戳 |
2633| GPSDateStamp | GPS日期戳 |
2634| ImageDescription | 图像描述 |
2635| Make | 制造商 |
2636| MakeNote | 制造商 |
2637| Model | 型号 |
2638| PhotoMode | 拍摄模式 |
2639| SensitivityType | 感光类型 |
2640| StandardOutputSensitivity | 标准输出感光度 |
2641| RecommendedExposureIndex | 推荐曝光指数 |
2642| ApertureValue | 光圈 |
2643| MeteringMode | 测光模式 |
2644| LightSource | 光源 |
2645| Flash | 闪光灯 |
2646| FocalLength | 镜头焦距 |
2647| UserComment | 用户注释 |
2648| PixelXDimension | 有效图像宽度 |
2649| PixelYDimension | 有效图像高度 |
2650| WhiteBalance | 白平衡 |
2651| FocalLengthIn35mmFilm | 35mm等效焦距 |
2652| ExposureBiasValue | 曝光补偿 |
2653
2654**示例:**
2655
2656```ts
2657import dataSharePredicates from '@ohos.data.dataSharePredicates';
2658
2659async function example() {
2660  try {
2661    console.info('getExifDemo');
2662    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2663    predicates.isNotNull('all_exif')
2664    let fetchOptions: userFileManager.FetchOptions = {
2665      fetchColumns: ['all_exif', userFileManager.ImageVideoKey.USER_COMMENT.toString()],
2666      predicates: predicates
2667    };
2668    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
2669    let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2670    console.info('getExifDemo fileAsset displayName: ' + JSON.stringify(fileAsset.displayName));
2671    let userCommentKey: string = 'UserComment';
2672    fileAsset.getExif((err, exifMessage) => {
2673      if (exifMessage != undefined) {
2674        let userComment: string = JSON.stringify(JSON.parse(exifMessage), [userCommentKey]);
2675        console.info('getExifDemo userComment: ' + JSON.stringify(userComment));
2676      } else {
2677        console.error('getExif failed, message = ', err);
2678      }
2679    });
2680    fetchResult.close();
2681  } catch (err) {
2682    console.error('getExifDemoCallback failed with error: ' + err);
2683  }
2684}
2685```
2686
2687### setUserComment<sup>10+</sup>
2688
2689setUserComment(userComment: string): Promise&lt;void&gt;
2690
2691修改图片或者视频的备注信息,该方法使用Promise来返回结果。
2692
2693**注意**:此接口只可修改图片或者视频的备注信息。
2694
2695**系统接口**:此接口为系统接口。
2696
2697**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2698
2699**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2700
2701**参数:**
2702
2703| 参数名   | 类型                      | 必填 | 说明       |
2704| -------- | ------------------------- | ---- | ---------- |
2705| userComment | string | 是   | 待修改的图片或视频的备注信息,备注信息最长为140字符。 |
2706
2707**返回值:**
2708
2709| 类型                                    | 说明              |
2710| --------------------------------------- | ----------------- |
2711|Promise&lt;void&gt; | Promise对象,返回void。 |
2712
2713**示例:**
2714
2715```ts
2716import dataSharePredicates from '@ohos.data.dataSharePredicates';
2717
2718async function example() {
2719  try {
2720    console.info('setUserCommentDemo')
2721    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2722    let fetchOptions: userFileManager.FetchOptions = {
2723      fetchColumns: [],
2724      predicates: predicates
2725    };
2726    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
2727    let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2728    let userComment: string = 'test_set_user_comment';
2729    await fileAsset.setUserComment(userComment);
2730  } catch (err) {
2731    console.error('setUserCommentDemoCallback failed with error: ' + err);
2732  }
2733}
2734```
2735
2736### setUserComment<sup>10+</sup>
2737
2738setUserComment(userComment: string, callback: AsyncCallback&lt;void&gt;): void
2739
2740修改图片或者视频的备注信息,该方法使用callback形式来返回结果。
2741
2742**注意**:此接口只可修改图片或者视频的备注信息。
2743
2744**系统接口**:此接口为系统接口。
2745
2746**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2747
2748**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2749
2750**参数:**
2751
2752| 参数名   | 类型                      | 必填 | 说明       |
2753| -------- | ------------------------- | ---- | ---------- |
2754| userComment | string | 是   | 待修改的图片或视频的备注信息,备注信息最长为140字符。 |
2755| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
2756
2757**示例:**
2758
2759```ts
2760import dataSharePredicates from '@ohos.data.dataSharePredicates';
2761
2762async function example() {
2763  try {
2764    console.info('setUserCommentDemo')
2765    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2766    let fetchOptions: userFileManager.FetchOptions = {
2767      fetchColumns: [],
2768      predicates: predicates
2769    };
2770    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOptions);
2771    let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2772    let userComment: string = 'test_set_user_comment';
2773    fileAsset.setUserComment(userComment, (err) => {
2774      if (err === undefined) {
2775        console.info('setUserComment successfully');
2776      } else {
2777        console.error('setUserComment failed with error: ' + err);
2778      }
2779    });
2780  } catch (err) {
2781    console.error('setUserCommentDemoCallback failed with error: ' + err);
2782  }
2783}
2784```
2785
2786## FetchResult
2787
2788文件检索结果集。
2789
2790### getCount
2791
2792getCount(): number
2793
2794获取文件检索结果中的文件总数。
2795
2796**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2797
2798**返回值:**
2799
2800| 类型     | 说明       |
2801| ------ | -------- |
2802| number | 检索到的文件总数。 |
2803
2804**示例:**
2805
2806```ts
2807import dataSharePredicates from '@ohos.data.dataSharePredicates';
2808
2809async function example() {
2810  console.info('getCountDemo');
2811  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2812  let fetchOption: userFileManager.FetchOptions = {
2813    fetchColumns: [],
2814    predicates: predicates
2815  };
2816  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2817  const fetchCount: number = fetchResult.getCount();
2818  console.info('fetchCount = ', fetchCount);
2819}
2820```
2821
2822### isAfterLast
2823
2824isAfterLast(): boolean
2825
2826检查结果集是否指向最后一行。
2827
2828**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2829
2830**返回值:**
2831
2832| 类型      | 说明                                 |
2833| ------- | ---------------------------------- |
2834| boolean | 当读到最后一条记录后,后续没有记录返回true,否则返回false。 |
2835
2836**示例:**
2837
2838```ts
2839import dataSharePredicates from '@ohos.data.dataSharePredicates';
2840
2841async function example() {
2842  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2843  let fetchOption: userFileManager.FetchOptions = {
2844    fetchColumns: [],
2845    predicates: predicates
2846  };
2847  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2848  const fetchCount: number = fetchResult.getCount();
2849  console.info('count:' + fetchCount);
2850  let fileAsset: userFileManager.FileAsset = await fetchResult.getLastObject();
2851  if (fetchResult.isAfterLast()) {
2852    console.info('fileAsset isAfterLast displayName = ', fileAsset.displayName);
2853  } else {
2854    console.info('fileAsset  not isAfterLast ');
2855  }
2856}
2857```
2858
2859### close
2860
2861close(): void
2862
2863释放 FetchFileResult 实例并使其失效。无法调用其他方法。
2864
2865**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2866
2867**示例:**
2868
2869```ts
2870import dataSharePredicates from '@ohos.data.dataSharePredicates';
2871
2872async function example() {
2873  console.info('fetchResultCloseDemo');
2874  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2875  let fetchOption: userFileManager.FetchOptions = {
2876    fetchColumns: [],
2877    predicates: predicates
2878  };
2879  try {
2880    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2881    fetchResult.close();
2882    console.info('close succeed.');
2883  } catch (err) {
2884    console.error('close fail. message = ' + err);
2885  }
2886}
2887```
2888
2889### getFirstObject
2890
2891getFirstObject(callback: AsyncCallback&lt;T&gt;): void
2892
2893获取文件检索结果中的第一个文件资产。此方法使用callback形式返回结果。
2894
2895**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2896
2897**参数:**
2898
2899| 参数名   | 类型                                          | 必填 | 说明                                        |
2900| -------- | --------------------------------------------- | ---- | ------------------------------------------- |
2901| callback | AsyncCallback&lt;T&gt; | 是   | 异步获取结果集中的第一个完成后的回调。 |
2902
2903**示例:**
2904
2905```ts
2906import dataSharePredicates from '@ohos.data.dataSharePredicates';
2907
2908async function example() {
2909  console.info('getFirstObjectDemo');
2910  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2911  let fetchOption: userFileManager.FetchOptions = {
2912    fetchColumns: [],
2913    predicates: predicates
2914  };
2915  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2916  fetchResult.getFirstObject((err, fileAsset) => {
2917    if (fileAsset != undefined) {
2918      console.info('fileAsset displayName: ', fileAsset.displayName);
2919    } else {
2920      console.error('fileAsset failed with err:' + err);
2921    }
2922  });
2923}
2924```
2925
2926### getFirstObject
2927
2928getFirstObject(): Promise&lt;T&gt;
2929
2930获取文件检索结果中的第一个文件资产。此方法使用promise方式来异步返回。
2931
2932**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2933
2934**返回值:**
2935
2936| 类型                                    | 说明                       |
2937| --------------------------------------- | -------------------------- |
2938| Promise&lt;T&gt; | Promise对象,返回结果集中第一个对象。 |
2939
2940**示例:**
2941
2942```ts
2943import dataSharePredicates from '@ohos.data.dataSharePredicates';
2944
2945async function example() {
2946  console.info('getFirstObjectDemo');
2947  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2948  let fetchOption: userFileManager.FetchOptions = {
2949    fetchColumns: [],
2950    predicates: predicates
2951  };
2952  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2953  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
2954  console.info('fileAsset displayName: ', fileAsset.displayName);
2955}
2956```
2957
2958### getNextObject
2959
2960getNextObject(callback: AsyncCallback&lt;T&gt;): void
2961
2962获取文件检索结果中的下一个文件资产。此方法使用callback形式返回结果。
2963在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。
2964
2965**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
2966
2967**参数:**
2968
2969| 参数名    | 类型                                          | 必填 | 说明                                      |
2970| --------- | --------------------------------------------- | ---- | ----------------------------------------- |
2971| callback | AsyncCallback&lt;T&gt; | 是   | 异步返回结果集中下一个之后的回调。 |
2972
2973**示例:**
2974
2975```ts
2976import dataSharePredicates from '@ohos.data.dataSharePredicates';
2977
2978async function example() {
2979  console.info('getNextObjectDemo');
2980  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2981  let fetchOption: userFileManager.FetchOptions = {
2982    fetchColumns: [],
2983    predicates: predicates
2984  };
2985  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
2986  await fetchResult.getFirstObject();
2987  if (!fetchResult.isAfterLast()) {
2988    fetchResult.getNextObject((err, fileAsset) => {
2989      if (fileAsset != undefined) {
2990        console.info('fileAsset displayName: ', fileAsset.displayName);
2991      } else {
2992        console.error('fileAsset failed with err: ' + err);
2993      }
2994    });
2995  }
2996}
2997```
2998
2999### getNextObject
3000
3001getNextObject(): Promise&lt;T&gt;
3002
3003获取文件检索结果中的下一个文件资产。此方法使用promise方式来异步返回。
3004在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。
3005
3006**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3007
3008**返回值:**
3009
3010| 类型                                    | 说明              |
3011| --------------------------------------- | ----------------- |
3012| Promise&lt;T&gt; | Promise对象,返回结果集中下一个对象。 |
3013
3014**示例:**
3015
3016```ts
3017import dataSharePredicates from '@ohos.data.dataSharePredicates';
3018
3019async function example() {
3020  console.info('getNextObjectDemo');
3021  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3022  let fetchOption: userFileManager.FetchOptions = {
3023    fetchColumns: [],
3024    predicates: predicates
3025  };
3026  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3027  await fetchResult.getFirstObject();
3028  if (!fetchResult.isAfterLast()) {
3029    let fileAsset: userFileManager.FileAsset = await fetchResult.getNextObject();
3030    console.info('fileAsset displayName: ', fileAsset.displayName);
3031  }
3032}
3033```
3034
3035### getLastObject
3036
3037getLastObject(callback: AsyncCallback&lt;T&gt;): void
3038
3039获取文件检索结果中的最后一个文件资产。此方法使用callback回调来返回。
3040
3041**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3042
3043**参数:**
3044
3045| 参数名   | 类型                                          | 必填 | 说明                        |
3046| -------- | --------------------------------------------- | ---- | --------------------------- |
3047| callback | AsyncCallback&lt;T&gt; | 是   | 异步返回结果集中最后一个的回调。 |
3048
3049**示例:**
3050
3051```ts
3052import dataSharePredicates from '@ohos.data.dataSharePredicates';
3053
3054async function example() {
3055  console.info('getLastObjectDemo');
3056  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3057  let fetchOption: userFileManager.FetchOptions = {
3058    fetchColumns: [],
3059    predicates: predicates
3060  };
3061  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3062  fetchResult.getLastObject((err, fileAsset) => {
3063    if (fileAsset != undefined) {
3064      console.info('fileAsset displayName: ', fileAsset.displayName);
3065    } else {
3066      console.error('fileAsset failed with err: ' + err);
3067    }
3068  });
3069}
3070```
3071
3072### getLastObject
3073
3074getLastObject(): Promise&lt;T&gt;
3075
3076获取文件检索结果中的最后一个文件资产。此方法使用Promise方式来返回。
3077
3078**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3079
3080**返回值:**
3081
3082| 类型                                    | 说明              |
3083| --------------------------------------- | ----------------- |
3084| Promise&lt;T&gt; | Promise对象,返回结果集中最后一个对象。 |
3085
3086**示例:**
3087
3088```ts
3089import dataSharePredicates from '@ohos.data.dataSharePredicates';
3090
3091async function example() {
3092  console.info('getLastObjectDemo');
3093  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3094  let fetchOption: userFileManager.FetchOptions = {
3095    fetchColumns: [],
3096    predicates: predicates
3097  };
3098  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3099  let fileAsset: userFileManager.FileAsset = await fetchResult.getLastObject();
3100  console.info('fileAsset displayName: ', fileAsset.displayName);
3101}
3102```
3103
3104### getPositionObject
3105
3106getPositionObject(index: number, callback: AsyncCallback&lt;T&gt;): void
3107
3108获取文件检索结果中具有指定索引的文件资产。此方法使用callback来返回。
3109
3110**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3111
3112**参数:**
3113
3114| 参数名       | 类型                                       | 必填   | 说明                 |
3115| -------- | ---------------------------------------- | ---- | ------------------ |
3116| index    | number                                   | 是    | 要获取的文件的索引,从0开始。     |
3117| callback | AsyncCallback&lt;T&gt; | 是    | 异步返回指定索引的文件资产的回调。 |
3118
3119**错误码:**
3120
3121接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3122
3123| 错误码ID | 错误信息 |
3124| -------- | ---------------------------------------- |
3125| 13900020   | if type index is not number.         |
3126
3127**示例:**
3128
3129```ts
3130import dataSharePredicates from '@ohos.data.dataSharePredicates';
3131
3132async function example() {
3133  console.info('getPositionObjectDemo');
3134  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3135  let fetchOption: userFileManager.FetchOptions = {
3136    fetchColumns: [],
3137    predicates: predicates
3138  };
3139  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3140  fetchResult.getPositionObject(0, (err, fileAsset) => {
3141    if (fileAsset != undefined) {
3142      console.info('fileAsset displayName: ', fileAsset.displayName);
3143    } else {
3144      console.error('fileAsset failed with err: ' + err);
3145    }
3146  });
3147}
3148```
3149
3150### getPositionObject
3151
3152getPositionObject(index: number): Promise&lt;T&gt;
3153
3154获取文件检索结果中具有指定索引的文件资产。此方法使用Promise形式返回文件Asset。
3155
3156**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3157
3158**参数:**
3159
3160| 参数名    | 类型     | 必填   | 说明             |
3161| ----- | ------ | ---- | -------------- |
3162| index | number | 是    | 要获取的文件的索引,从0开始。 |
3163
3164**返回值:**
3165
3166| 类型                                    | 说明              |
3167| --------------------------------------- | ----------------- |
3168| Promise&lt;T&gt; | Promise对象,返回结果集中指定索引的一个对象。 |
3169
3170**错误码:**
3171
3172接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3173
3174| 错误码ID | 错误信息 |
3175| -------- | ---------------------------------------- |
3176| 13900020   | if type index is not number.         |
3177
3178**示例:**
3179
3180```ts
3181import dataSharePredicates from '@ohos.data.dataSharePredicates';
3182
3183async function example() {
3184  console.info('getPositionObjectDemo');
3185  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3186  let fetchOption: userFileManager.FetchOptions = {
3187    fetchColumns: [],
3188    predicates: predicates
3189  };
3190  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3191  let fileAsset: userFileManager.FileAsset = await fetchResult.getPositionObject(0);
3192  console.info('fileAsset displayName: ', fileAsset.displayName);
3193}
3194```
3195
3196### getAllObject<sup>10+</sup>
3197
3198getAllObject(callback: AsyncCallback&lt;Array&lt;T&gt;&gt;): void
3199
3200获取文件检索结果中的所有文件资产。此方法使用callback形式返回结果。
3201
3202**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3203
3204**参数:**
3205
3206| 参数名   | 类型                                          | 必填 | 说明                                        |
3207| -------- | --------------------------------------------- | ---- | ------------------------------------------- |
3208| callback | AsyncCallback&lt;Array&lt;T&gt;&gt; | 是   | 异步获取结果集中的所有文件资产完成后的回调。 |
3209
3210**示例:**
3211
3212```ts
3213import dataSharePredicates from '@ohos.data.dataSharePredicates';
3214
3215async function example() {
3216  console.info('getAllObjectDemo');
3217  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3218  let fetchOption: userFileManager.FetchOptions = {
3219    fetchColumns: [],
3220    predicates: predicates
3221  };
3222  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3223  fetchResult.getAllObject((err, fileAssetList) => {
3224    if (fileAssetList != undefined) {
3225      console.info('fileAssetList length: ', fileAssetList.length);
3226    } else {
3227      console.error('fileAssetList failed with err:' + err);
3228    }
3229  });
3230}
3231```
3232
3233### getAllObject<sup>10+</sup>
3234
3235getAllObject(): Promise&lt;Array&lt;T&gt;&gt;
3236
3237获取文件检索结果中的所有文件资产。此方法使用promise方式来异步返回。
3238
3239**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3240
3241**返回值:**
3242
3243| 类型                                    | 说明                       |
3244| --------------------------------------- | -------------------------- |
3245| Promise&lt;Array&lt;T&gt;&gt; | Promise对象,返回结果集中所有文件资产数组。 |
3246
3247**示例:**
3248
3249```ts
3250import dataSharePredicates from '@ohos.data.dataSharePredicates';
3251
3252async function example() {
3253  console.info('getAllObjectDemo');
3254  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3255  let fetchOption: userFileManager.FetchOptions = {
3256    fetchColumns: [],
3257    predicates: predicates
3258  };
3259  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3260  let fileAssetList: Array<userFileManager.FileAsset> = await fetchResult.getAllObject();
3261  console.info('fileAssetList length: ', fileAssetList.length);
3262}
3263```
3264
3265## Album
3266
3267实体相册
3268
3269### 属性
3270
3271**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3272
3273| 名称           | 类型    | 可读   | 可写  | 说明   |
3274| ------------ | ------ | ---- | ---- | ------- |
3275| albumType<sup>10+</sup> | [AlbumType]( #albumtype10) | 是    | 否    | 相册类型。    |
3276| albumSubType<sup>10+</sup> | [AlbumSubType]( #albumsubtype10) | 是    | 否   | 相册子类型。    |
3277| albumName | string | 是    | 用户相册可写,预置相册不可写   | 相册名称。    |
3278| albumUri | string | 是    | 否    | 相册Uri。   |
3279| count | number | 是    | 否    |  相册中文件数量。 |
3280| coverUri | string | 是    | 用户相册可写,预置相册不可写	    | 封面文件Uri。 |
3281
3282### getPhotoAssets
3283
3284getPhotoAssets(options: FetchOptions, callback: AsyncCallback&lt;FetchResult&lt;FileAsset&gt;&gt;): void;
3285
3286获取相册中的文件。该方法使用callback形式来返回文件。
3287
3288**需要权限**:ohos.permission.READ_IMAGEVIDEO
3289
3290**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3291
3292**参数:**
3293
3294| 参数名   | 类型                      | 必填 | 说明       |
3295| -------- | ------------------------- | ---- | ---------- |
3296| options | [FetchOptions](#fetchoptions) | 是   | 检索选项。 |
3297| callback | AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[FileAsset](#fileasset)&gt;&gt; | 是   | callback返回图片和视频数据结果集。 |
3298
3299**错误码:**
3300
3301接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3302
3303| 错误码ID | 错误信息 |
3304| -------- | ---------------------------------------- |
3305| 13900020   | if type options is not FetchOptions.         |
3306
3307**示例:**
3308
3309```ts
3310import dataSharePredicates from '@ohos.data.dataSharePredicates';
3311
3312async function example() {
3313  console.info('albumGetFileAssetsDemoCallback');
3314
3315  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3316  let albumFetchOptions: userFileManager.AlbumFetchOptions = {
3317    predicates: predicates
3318  };
3319  let fetchOption: userFileManager.FetchOptions = {
3320    fetchColumns: [],
3321    predicates: predicates
3322  };
3323  let albumList: userFileManager.FetchResult<userFileManager.Album> = await mgr.getPhotoAlbums(albumFetchOptions);
3324  let album: userFileManager.Album = await albumList.getFirstObject();
3325  album.getPhotoAssets(fetchOption, (err, albumFetchResult) => {
3326    if (albumFetchResult != undefined) {
3327      console.info('album getPhotoAssets successfully, getCount: ' + albumFetchResult.getCount());
3328    } else {
3329      console.error('album getPhotoAssets failed with error: ' + err);
3330    }
3331  });
3332}
3333```
3334
3335### getPhotoAssets
3336
3337getPhotoAssets(options: FetchOptions): Promise&lt;FetchResult&lt;FileAsset&gt;&gt;;
3338
3339获取相册中的文件。该方法使用Promise来返回文件。
3340
3341**需要权限**:ohos.permission.READ_IMAGEVIDEO
3342
3343**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3344
3345**参数:**
3346
3347| 参数名   | 类型                      | 必填 | 说明       |
3348| -------- | ------------------------- | ---- | ---------- |
3349| options | [FetchOptions](#fetchoptions) | 是   | 检索选项。 |
3350
3351**返回值:**
3352
3353| 类型                                    | 说明              |
3354| --------------------------------------- | ----------------- |
3355| Promise&lt;[FetchResult](#fetchresult)&lt;[FileAsset](#fileasset)&gt;&gt; | Promise对象,返回图片和视频数据结果集。 |
3356
3357**错误码:**
3358
3359接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3360
3361| 错误码ID | 错误信息 |
3362| -------- | ---------------------------------------- |
3363| 13900020   | if type options is not FetchOptions.         |
3364
3365**示例:**
3366
3367```ts
3368import dataSharePredicates from '@ohos.data.dataSharePredicates';
3369import { BusinessError } from '@ohos.base';
3370
3371async function example() {
3372  console.info('albumGetFileAssetsDemoPromise');
3373
3374  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3375  let albumFetchOptions: userFileManager.AlbumFetchOptions = {
3376    predicates: predicates
3377  };
3378  let fetchOption: userFileManager.FetchOptions = {
3379    fetchColumns: [],
3380    predicates: predicates
3381  };
3382  const albumList: userFileManager.FetchResult<userFileManager.Album> = await mgr.getPhotoAlbums(albumFetchOptions);
3383  const album: userFileManager.Album = await albumList.getFirstObject();
3384  album.getPhotoAssets(fetchOption).then((albumFetchResult) => {
3385    console.info('album getFileAssets successfully, getCount: ' + albumFetchResult.getCount());
3386  }).catch((err: BusinessError) => {
3387    console.error('album getFileAssets failed with error: ' + err);
3388  });
3389}
3390```
3391
3392### commitModify
3393
3394commitModify(callback: AsyncCallback&lt;void&gt;): void;
3395
3396更新相册属性修改到数据库中。该方法使用callback形式来返回结果。
3397
3398**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3399
3400**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3401
3402**参数:**
3403
3404| 参数名   | 类型                      | 必填 | 说明       |
3405| -------- | ------------------------- | ---- | ---------- |
3406| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
3407
3408**示例:**
3409
3410```ts
3411import dataSharePredicates from '@ohos.data.dataSharePredicates';
3412
3413async function example() {
3414  console.info('albumCommitModifyDemo');
3415  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3416  let albumFetchOptions: userFileManager.AlbumFetchOptions = {
3417    predicates: predicates
3418  };
3419  const albumList: userFileManager.FetchResult<userFileManager.Album> = await mgr.getPhotoAlbums(albumFetchOptions);
3420  const album: userFileManager.Album = await albumList.getFirstObject();
3421  album.albumName = 'hello';
3422  album.commitModify((err) => {
3423    if (err != undefined) {
3424      console.error('commitModify failed with error: ' + err);
3425    } else {
3426      console.info('commitModify successfully');
3427    }
3428  });
3429}
3430```
3431
3432### commitModify
3433
3434commitModify(): Promise&lt;void&gt;;
3435
3436更新相册属性修改到数据库中。该方法使用Promise来返回结果。
3437
3438**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3439
3440**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3441
3442**返回值:**
3443
3444| 类型                  | 说明           |
3445| ------------------- | ------------ |
3446| Promise&lt;void&gt; | Promise对象,返回void。 |
3447
3448**示例:**
3449
3450```ts
3451import dataSharePredicates from '@ohos.data.dataSharePredicates';
3452import { BusinessError } from '@ohos.base';
3453
3454async function example() {
3455  console.info('albumCommitModifyDemo');
3456  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3457  let albumFetchOptions: userFileManager.AlbumFetchOptions = {
3458    predicates: predicates
3459  };
3460  try {
3461    let albumList: userFileManager.FetchResult<userFileManager.Album> = await mgr.getPhotoAlbums(albumFetchOptions);
3462    let album: userFileManager.Album = await albumList.getFirstObject();
3463    album.albumName = 'hello';
3464    album.commitModify().then(() => {
3465      console.info('commitModify successfully');
3466    }).catch((err: BusinessError) => {
3467      console.error('commitModify failed with error: ' + err);
3468    });
3469  } catch (err) {
3470    console.error('getPhotoAlbums failed. message = ', err);
3471  }
3472}
3473```
3474
3475### addPhotoAssets<sup>10+</sup>
3476
3477addPhotoAssets(assets: Array&lt;FileAsset&gt;, callback: AsyncCallback&lt;void&gt;): void;
3478
3479往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。
3480
3481**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3482
3483**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3484
3485**参数:**
3486
3487| 参数名   | 类型                      | 必填 | 说明       |
3488| -------- | ------------------------- | ---- | ---------- |
3489| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 待添加到相册中的图片或视频数组。 |
3490| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
3491
3492**错误码:**
3493
3494接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3495
3496| 错误码ID | 错误信息 |
3497| -------- | ---------------------------------------- |
3498| 13900020   | if PhotoAssets is invalid.         |
3499
3500**示例:**
3501
3502```ts
3503import dataSharePredicates from '@ohos.data.dataSharePredicates';
3504
3505async function example() {
3506  try {
3507    console.info('addPhotoAssetsDemoCallback');
3508    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3509    let fetchOption: userFileManager.FetchOptions = {
3510      fetchColumns: [],
3511      predicates: predicates
3512    };
3513    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC);
3514    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3515    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3516    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3517    album.addPhotoAssets([asset], (err) => {
3518      if (err === undefined) {
3519        console.info('album addPhotoAssets successfully');
3520      } else {
3521        console.error('album addPhotoAssets failed with error: ' + err);
3522      }
3523    });
3524  } catch (err) {
3525    console.error('addPhotoAssetsDemoCallback failed with error: ' + err);
3526  }
3527}
3528```
3529
3530### addPhotoAssets<sup>10+</sup>
3531
3532addPhotoAssets(assets: Array&lt;FileAsset&gt;): Promise&lt;void&gt;;
3533
3534往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。
3535
3536**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3537
3538**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3539
3540**参数:**
3541
3542| 参数名   | 类型                      | 必填 | 说明       |
3543| -------- | ------------------------- | ---- | ---------- |
3544| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 待添加到相册中的图片或视频数组。 |
3545
3546**返回值:**
3547
3548| 类型                                    | 说明              |
3549| --------------------------------------- | ----------------- |
3550|Promise&lt;void&gt; | Promise对象,返回void。 |
3551
3552**错误码:**
3553
3554接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3555
3556| 错误码ID | 错误信息 |
3557| -------- | ---------------------------------------- |
3558| 13900020   | if PhotoAssets is invalid.         |
3559
3560**示例:**
3561
3562```ts
3563import dataSharePredicates from '@ohos.data.dataSharePredicates';
3564import { BusinessError } from '@ohos.base';
3565
3566async function example() {
3567  try {
3568    console.info('addPhotoAssetsDemoPromise');
3569    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3570    let fetchOption: userFileManager.FetchOptions = {
3571      fetchColumns: [],
3572      predicates: predicates
3573    };
3574    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC);
3575    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3576    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await mgr.getPhotoAssets(fetchOption);
3577    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3578    album.addPhotoAssets([asset]).then(() => {
3579      console.info('album addPhotoAssets successfully');
3580    }).catch((err: BusinessError) => {
3581      console.error('album addPhotoAssets failed with error: ' + err);
3582    });
3583  } catch (err) {
3584    console.error('addPhotoAssetsDemoPromise failed with error: ' + err);
3585  }
3586}
3587```
3588
3589### removePhotoAssets<sup>10+</sup>
3590
3591removePhotoAssets(assets: Array&lt;FileAsset&gt;, callback: AsyncCallback&lt;void&gt;): void;
3592
3593从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。
3594
3595**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3596
3597**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3598
3599**参数:**
3600
3601| 参数名   | 类型                      | 必填 | 说明       |
3602| -------- | ------------------------- | ---- | ---------- |
3603| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 相册中待移除的图片或视频数组。 |
3604| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
3605
3606**错误码:**
3607
3608接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3609
3610| 错误码ID | 错误信息 |
3611| -------- | ---------------------------------------- |
3612| 13900020   | if PhotoAssets is invalid.         |
3613
3614**示例:**
3615
3616```ts
3617import dataSharePredicates from '@ohos.data.dataSharePredicates';
3618
3619async function example() {
3620  try {
3621    console.info('removePhotoAssetsDemoCallback');
3622    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3623    let fetchOption: userFileManager.FetchOptions = {
3624      fetchColumns: [],
3625      predicates: predicates
3626    };
3627    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC);
3628    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3629    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOption);
3630    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3631    album.removePhotoAssets([asset], (err) => {
3632      if (err === undefined) {
3633        console.info('album removePhotoAssets successfully');
3634      } else {
3635        console.error('album removePhotoAssets failed with error: ' + err);
3636      }
3637    });
3638  } catch (err) {
3639    console.error('removePhotoAssetsDemoCallback failed with error: ' + err);
3640  }
3641}
3642```
3643
3644### removePhotoAssets<sup>10+</sup>
3645
3646removePhotoAssets(assets: Array&lt;FileAsset&gt;): Promise&lt;void&gt;;
3647
3648从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。
3649
3650**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3651
3652**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3653
3654**参数:**
3655
3656| 参数名   | 类型                      | 必填 | 说明       |
3657| -------- | ------------------------- | ---- | ---------- |
3658| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 相册中待移除的图片或视频数组。 |
3659
3660**返回值:**
3661
3662| 类型                                    | 说明              |
3663| --------------------------------------- | ----------------- |
3664|Promise&lt;void&gt; | Promise对象,返回void。 |
3665
3666**错误码:**
3667
3668接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3669
3670| 错误码ID | 错误信息 |
3671| -------- | ---------------------------------------- |
3672| 13900020   | if PhotoAssets is invalid.         |
3673
3674**示例:**
3675
3676```ts
3677import dataSharePredicates from '@ohos.data.dataSharePredicates';
3678import { BusinessError } from '@ohos.base';
3679
3680async function example() {
3681  try {
3682    console.info('removePhotoAssetsDemoPromise');
3683    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3684    let fetchOption: userFileManager.FetchOptions = {
3685      fetchColumns: [],
3686      predicates: predicates
3687    };
3688    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.USER, userFileManager.AlbumSubType.USER_GENERIC);
3689    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3690    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOption);
3691    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3692    album.removePhotoAssets([asset]).then(() => {
3693      console.info('album removePhotoAssets successfully');
3694    }).catch((err: BusinessError) => {
3695      console.error('album removePhotoAssets failed with error: ' + err);
3696    });
3697  } catch (err) {
3698    console.error('removePhotoAssetsDemoPromise failed with error: ' + err);
3699  }
3700}
3701```
3702
3703### recoverPhotoAssets<sup>10+</sup>
3704
3705recoverPhotoAssets(assets: Array&lt;FileAsset&gt;, callback: AsyncCallback&lt;void&gt;): void;
3706
3707从回收站中恢复图片或者视频,需要先在回收站中预置文件资源。该方法使用callback形式来返回结果。
3708
3709**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3710
3711**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3712
3713**参数:**
3714
3715| 参数名   | 类型                      | 必填 | 说明       |
3716| -------- | ------------------------- | ---- | ---------- |
3717| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 回收站中待恢复图片或者视频数组。 |
3718| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
3719
3720**错误码:**
3721
3722接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3723
3724| 错误码ID | 错误信息 |
3725| -------- | ---------------------------------------- |
3726| 13900020   | if PhotoAssets is invalid.         |
3727
3728**示例:**
3729
3730```ts
3731import dataSharePredicates from '@ohos.data.dataSharePredicates';
3732
3733async function example() {
3734  try {
3735    console.info('recoverPhotoAssetsDemoCallback');
3736    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3737    let fetchOption: userFileManager.FetchOptions = {
3738      fetchColumns: [],
3739      predicates: predicates
3740    };
3741    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.TRASH);
3742    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3743    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOption);
3744    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3745    album.recoverPhotoAssets([asset], (err) => {
3746      if (err === undefined) {
3747        console.info('album recoverPhotoAssets successfully');
3748      } else {
3749        console.error('album recoverPhotoAssets failed with error: ' + err);
3750      }
3751    });
3752  } catch (err) {
3753    console.error('recoverPhotoAssetsDemoCallback failed with error: ' + err);
3754  }
3755}
3756```
3757
3758### recoverPhotoAssets<sup>10+</sup>
3759
3760recoverPhotoAssets(assets: Array&lt;FileAsset&gt;): Promise&lt;void&gt;;
3761
3762从回收站中恢复图片或者视频,需要先在回收站中预置文件资源。该方法使用Promise来返回结果。
3763
3764**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3765
3766**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3767
3768**参数:**
3769
3770| 参数名   | 类型                      | 必填 | 说明       |
3771| -------- | ------------------------- | ---- | ---------- |
3772| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 回收站中待恢复图片或者视频数组。 |
3773
3774**返回值:**
3775
3776| 类型                                    | 说明              |
3777| --------------------------------------- | ----------------- |
3778|Promise&lt;void&gt; | Promise对象,返回void。 |
3779
3780**错误码:**
3781
3782接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3783
3784| 错误码ID | 错误信息 |
3785| -------- | ---------------------------------------- |
3786| 13900020   | if PhotoAssets is invalid.         |
3787
3788**示例:**
3789
3790```ts
3791import dataSharePredicates from '@ohos.data.dataSharePredicates';
3792import { BusinessError } from '@ohos.base';
3793
3794async function example() {
3795  try {
3796    console.info('recoverPhotoAssetsDemoPromise');
3797    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3798    let fetchOption: userFileManager.FetchOptions = {
3799      fetchColumns: [],
3800      predicates: predicates
3801    };
3802    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.TRASH);
3803    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3804    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOption);
3805    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3806    album.recoverPhotoAssets([asset]).then(() => {
3807      console.info('album recoverPhotoAssets successfully');
3808    }).catch((err: BusinessError) => {
3809      console.error('album recoverPhotoAssets failed with error: ' + err);
3810    });
3811  } catch (err) {
3812    console.error('recoverPhotoAssetsDemoPromise failed with error: ' + err);
3813  }
3814}
3815```
3816
3817### deletePhotoAssets<sup>10+</sup>
3818
3819deletePhotoAssets(assets: Array&lt;FileAsset&gt;, callback: AsyncCallback&lt;void&gt;): void;
3820
3821从回收站中彻底删除图片或者视频,需要先在回收站中预置文件资源。该方法使用callback形式来返回结果。
3822
3823**注意**:此操作不可逆,执行此操作后文件资源将彻底删除,请谨慎操作。
3824
3825**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3826
3827**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3828
3829**参数:**
3830
3831| 参数名   | 类型                      | 必填 | 说明       |
3832| -------- | ------------------------- | ---- | ---------- |
3833| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 回收站中待彻底删除图片或者视频数组。 |
3834| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
3835
3836**错误码:**
3837
3838接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3839
3840| 错误码ID | 错误信息 |
3841| -------- | ---------------------------------------- |
3842| 13900020   | if PhotoAssets is invalid.         |
3843
3844**示例:**
3845
3846```ts
3847import dataSharePredicates from '@ohos.data.dataSharePredicates';
3848
3849async function example() {
3850  try {
3851    console.info('deletePhotoAssetsDemoCallback');
3852    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3853    let fetchOption: userFileManager.FetchOptions = {
3854      fetchColumns: [],
3855      predicates: predicates
3856    };
3857    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.TRASH);
3858    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3859    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOption);
3860    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3861    album.deletePhotoAssets([asset], (err) => {
3862      if (err === undefined) {
3863        console.info('album deletePhotoAssets successfully');
3864      } else {
3865        console.error('album deletePhotoAssets failed with error: ' + err);
3866      }
3867    });
3868  } catch (err) {
3869    console.error('deletePhotoAssetsDemoCallback failed with error: ' + err);
3870  }
3871}
3872```
3873
3874### deletePhotoAssets<sup>10+</sup>
3875
3876deletePhotoAssets(assets: Array&lt;FileAsset&gt;): Promise&lt;void&gt;;
3877
3878从回收站中彻底删除图片或者视频,需要先在回收站中预置文件资源。该方法使用Promise来返回结果。
3879
3880**注意**:此操作不可逆,执行此操作后文件资源将彻底删除,请谨慎操作。
3881
3882**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3883
3884**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3885
3886**参数:**
3887
3888| 参数名   | 类型                      | 必填 | 说明       |
3889| -------- | ------------------------- | ---- | ---------- |
3890| assets | Array&lt;[FileAsset](#fileasset)&gt; | 是   | 回收站中待彻底删除图片或者视频数组。 |
3891
3892**返回值:**
3893
3894| 类型                                    | 说明              |
3895| --------------------------------------- | ----------------- |
3896|Promise&lt;void&gt; | Promise对象,返回void。 |
3897
3898**错误码:**
3899
3900接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3901
3902| 错误码ID | 错误信息 |
3903| -------- | ---------------------------------------- |
3904| 13900020   | if PhotoAssets is invalid.         |
3905
3906**示例:**
3907
3908```ts
3909import dataSharePredicates from '@ohos.data.dataSharePredicates';
3910import { BusinessError } from '@ohos.base';
3911
3912async function example() {
3913  try {
3914    console.info('deletePhotoAssetsDemoPromise');
3915    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3916    let fetchOption: userFileManager.FetchOptions = {
3917      fetchColumns: [],
3918      predicates: predicates
3919    };
3920    let albumFetchResult: userFileManager.FetchResult<userFileManager.Album> = await mgr.getAlbums(userFileManager.AlbumType.SYSTEM, userFileManager.AlbumSubType.TRASH);
3921    let album: userFileManager.Album = await albumFetchResult.getFirstObject();
3922    let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await album.getPhotoAssets(fetchOption);
3923    let asset: userFileManager.FileAsset = await fetchResult.getFirstObject();
3924    album.deletePhotoAssets([asset]).then(() => {
3925      console.info('album deletePhotoAssets successfully');
3926    }).catch((err: BusinessError) => {
3927      console.error('album deletePhotoAssets failed with error: ' + err);
3928    });
3929  } catch (err) {
3930    console.error('deletePhotoAssetsDemoPromise failed with error: ' + err);
3931  }
3932}
3933```
3934
3935## PrivateAlbum
3936
3937系统相册。
3938
3939此接口即将废弃,请使用[Album](#album)接口替代。
3940
3941### 属性
3942
3943**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3944
3945| 名称           | 类型    | 可读   | 可写   | 说明      |
3946| ------------ | ------ | ---- | ---- | ------- |
3947| albumName | string | 是    | 是    | 相册名称。    |
3948| albumUri | string | 是    | 否    | 相册Uri。   |
3949| dateModified | number | 是    | 否    | 修改日期。    |
3950| count | number | 是    | 否    | 相册中文件数量。 |
3951| coverUri | string | 是    | 否    | 封面文件Uri。 |
3952
3953### getPhotoAssets
3954
3955getPhotoAssets(options: FetchOptions, callback: AsyncCallback&lt;FetchResult&lt;FileAsset&gt;&gt;): void;
3956
3957获取系统相册中的文件。该方法使用callback形式来返回文件。
3958
3959此接口即将废弃,请使用[Album.getPhotoAssets](#getphotoassets-2)接口替代。
3960
3961**需要权限**:ohos.permission.READ_IMAGEVIDEO
3962
3963**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
3964
3965**参数:**
3966
3967| 参数名   | 类型                      | 必填 | 说明       |
3968| -------- | ------------------------- | ---- | ---------- |
3969| options | [FetchOptions](#fetchoptions) | 是   | 检索选项。 |
3970| callback | AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[FileAsset](#fileasset)&gt;&gt; | 是   | callback返回图片和视频数据结果集。 |
3971
3972**错误码:**
3973
3974接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
3975
3976| 错误码ID | 错误信息 |
3977| -------- | ---------------------------------------- |
3978| 13900020   | if type options is not FetchOptions.         |
3979
3980**示例:**
3981
3982```ts
3983import dataSharePredicates from '@ohos.data.dataSharePredicates';
3984
3985async function example() {
3986  console.info('privateAlbumGetFileAssetsDemoCallback');
3987  let albumList: userFileManager.FetchResult<userFileManager.PrivateAlbum> = await mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH);
3988  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3989  let fetchOption: userFileManager.FetchOptions = {
3990    fetchColumns: [],
3991    predicates: predicates
3992  };
3993  const trashAlbum: userFileManager.PrivateAlbum = await albumList.getFirstObject();
3994  trashAlbum.getPhotoAssets(fetchOption, (err, fetchResult) => {
3995    if (fetchResult != undefined) {
3996      let count = fetchResult.getCount();
3997      console.info('fetchResult.count = ', count);
3998    } else {
3999      console.error('getFileAssets failed, message = ', err);
4000    }
4001  });
4002}
4003
4004```
4005
4006### getPhotoAssets
4007
4008getPhotoAssets(options: FetchOptions): Promise&lt;FetchResult&lt;FileAsset&gt;&gt;;
4009
4010获取系统相册中的文件。该方法使用Promise来返回文件。
4011
4012此接口即将废弃,请使用[Album.getPhotoAssets](#getphotoassets-3)接口替代。
4013
4014**需要权限**:ohos.permission.READ_IMAGEVIDEO
4015
4016**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4017
4018**参数:**
4019
4020| 参数名   | 类型                      | 必填 | 说明       |
4021| -------- | ------------------------- | ---- | ---------- |
4022| options | [FetchOptions](#fetchoptions) | 是   | 检索选项。 |
4023
4024**返回值:**
4025
4026| 类型                                    | 说明              |
4027| --------------------------------------- | ----------------- |
4028| Promise:[FetchResult](#fetchresult)&lt;[FileAsset](#fileasset)&gt;| Promise对象,返回图片和视频数据结果集。 |
4029
4030**错误码:**
4031
4032接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
4033
4034| 错误码ID | 错误信息 |
4035| -------- | ---------------------------------------- |
4036| 13900020   | if type options is not FetchOptions.         |
4037
4038**示例:**
4039
4040```ts
4041import dataSharePredicates from '@ohos.data.dataSharePredicates';
4042
4043async function example() {
4044  console.info('privateAlbumGetFileAssetsDemoPromise');
4045  let albumList: userFileManager.FetchResult<userFileManager.PrivateAlbum> = await mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH);
4046  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4047  let fetchOption: userFileManager.FetchOptions = {
4048    fetchColumns: [],
4049    predicates: predicates
4050  };
4051  const trashAlbum: userFileManager.PrivateAlbum = await albumList.getFirstObject();
4052  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await trashAlbum.getPhotoAssets(fetchOption);
4053  let count = fetchResult.getCount();
4054  console.info('fetchResult.count = ', count);
4055}
4056```
4057
4058### delete
4059
4060delete(uri: string, callback: AsyncCallback&lt;void&gt;): void;
4061
4062删除系统相册中的文件,仅支持删除回收站相册中文件。
4063
4064此接口即将废弃,请使用[Album.deletePhotoAssets](#deletephotoassets10)接口替代。
4065
4066**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_AUDIO
4067
4068**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4069
4070**参数:**
4071
4072| 参数名   | 类型                      | 必填 | 说明       |
4073| -------- | ------------------------- | ---- | ---------- |
4074| uri | string | 是   | 系统相册中文件的uri。 |
4075| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
4076
4077**示例:**
4078
4079```ts
4080import dataSharePredicates from '@ohos.data.dataSharePredicates';
4081
4082async function example() {
4083  console.info('privateAlbumDeleteCallback');
4084  let albumList: userFileManager.FetchResult<userFileManager.PrivateAlbum> = await mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH);
4085  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4086  let fetchOption: userFileManager.FetchOptions = {
4087    fetchColumns: [],
4088    predicates: predicates
4089  };
4090  let trashAlbum: userFileManager.PrivateAlbum = await albumList.getFirstObject();
4091  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await trashAlbum.getPhotoAssets(fetchOption);
4092  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
4093  let deleteFileUri = fileAsset.uri;
4094  trashAlbum.delete(deleteFileUri, (err) => {
4095    if (err != undefined) {
4096      console.error('trashAlbum.delete failed, message = ', err);
4097    } else {
4098      console.info('trashAlbum.delete successfully');
4099    }
4100  });
4101}
4102```
4103
4104### delete
4105
4106delete(uri: string): Promise&lt;void&gt;;
4107
4108删除系统相册中的文件,仅支持删除回收站相册中文件。
4109
4110此接口即将废弃,请使用[Album.deletePhotoAssets](#deletephotoassets10)接口替代。
4111
4112**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_AUDIO
4113
4114**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4115
4116**参数:**
4117
4118| 参数名   | 类型                      | 必填 | 说明       |
4119| -------- | ------------------------- | ---- | ---------- |
4120| uri | string | 是   | 系统相册中文件的uri。 |
4121
4122**返回值:**
4123
4124| 类型                                    | 说明              |
4125| --------------------------------------- | ----------------- |
4126| Promise&lt;void&gt;| Promise对象,返回void。 |
4127
4128**示例:**
4129
4130```ts
4131import dataSharePredicates from '@ohos.data.dataSharePredicates';
4132import { BusinessError } from '@ohos.base';
4133
4134async function example() {
4135  console.info('privateAlbumDeleteDemoPromise');
4136  let albumList: userFileManager.FetchResult<userFileManager.PrivateAlbum> = await mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH);
4137  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4138  let fetchOption: userFileManager.FetchOptions = {
4139    fetchColumns: [],
4140    predicates: predicates
4141  };
4142  let trashAlbum: userFileManager.PrivateAlbum = await albumList.getFirstObject();
4143  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await trashAlbum.getPhotoAssets(fetchOption);
4144  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
4145  let deleteFileUri = fileAsset.uri;
4146  trashAlbum.delete(deleteFileUri).then(() => {
4147    console.info('trashAlbum.delete successfully');
4148  }).catch((err: BusinessError) => {
4149    console.error('trashAlbum.delete failed, message = ', err);
4150  });
4151}
4152```
4153
4154### recover
4155
4156recover(uri: string, callback: AsyncCallback&lt;void&gt;): void;
4157
4158恢复系统相册中的文件,仅支持恢复回收站相册中文件。
4159
4160此接口即将废弃,请使用[Album.recoverPhotoAssets](#recoverphotoassets10)接口替代。
4161
4162**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_AUDIO
4163
4164**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4165
4166**参数:**
4167
4168| 参数名   | 类型                      | 必填 | 说明       |
4169| -------- | ------------------------- | ---- | ---------- |
4170| uri | string | 是   | 系统相册中文件的uri。 |
4171| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
4172
4173**示例:**
4174
4175```ts
4176import dataSharePredicates from '@ohos.data.dataSharePredicates';
4177
4178async function example() {
4179  console.info('privateAlbumRecoverDemoCallback');
4180  let albumList: userFileManager.FetchResult<userFileManager.PrivateAlbum> = await mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH);
4181  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4182  let fetchOption: userFileManager.FetchOptions = {
4183    fetchColumns: [],
4184    predicates: predicates
4185  };
4186  let trashAlbum: userFileManager.PrivateAlbum = await albumList.getFirstObject();
4187  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await trashAlbum.getPhotoAssets(fetchOption);
4188  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
4189  let recoverFileUri: string = fileAsset.uri;
4190  trashAlbum.recover(recoverFileUri, (err) => {
4191    if (err != undefined) {
4192      console.error('trashAlbum.recover failed, message = ', err);
4193    } else {
4194      console.info('trashAlbum.recover successfully');
4195    }
4196  });
4197}
4198```
4199
4200### recover
4201
4202recover(uri: string): Promise&lt;void&gt;;
4203
4204恢复系统相册中的文件,仅支持恢复回收站相册中文件。
4205
4206此接口即将废弃,请使用[Album.recoverPhotoAssets](#recoverphotoassets10)接口替代。
4207
4208**需要权限**:ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_AUDIOohos.permission.WRITE_AUDIO
4209
4210**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4211
4212**参数:**
4213
4214| 参数名   | 类型                      | 必填 | 说明       |
4215| -------- | ------------------------- | ---- | ---------- |
4216| uri | string | 是   | 系统相册中文件的uri。 |
4217
4218**返回值:**
4219
4220| 类型                                    | 说明              |
4221| --------------------------------------- | ----------------- |
4222| Promise&lt;void&gt;| Promise对象,返回void。 |
4223
4224**示例:**
4225
4226```ts
4227import dataSharePredicates from '@ohos.data.dataSharePredicates';
4228import { BusinessError } from '@ohos.base';
4229
4230async function example() {
4231  console.info('privateAlbumRecoverDemoPromise');
4232  let albumList: userFileManager.FetchResult<userFileManager.PrivateAlbum> = await mgr.getPrivateAlbum(userFileManager.PrivateAlbumType.TYPE_TRASH);
4233  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4234  let fetchOption: userFileManager.FetchOptions = {
4235    fetchColumns: [],
4236    predicates: predicates
4237  };
4238  let trashAlbum: userFileManager.PrivateAlbum = await albumList.getFirstObject();
4239  let fetchResult: userFileManager.FetchResult<userFileManager.FileAsset> = await trashAlbum.getPhotoAssets(fetchOption);
4240  let fileAsset: userFileManager.FileAsset = await fetchResult.getFirstObject();
4241  let recoverFileUri: string = fileAsset.uri;
4242  trashAlbum.recover(recoverFileUri).then(() => {
4243    console.info('trashAlbum.recover successfully');
4244  }).catch((err: BusinessError) => {
4245    console.error('trashAlbum.recover failed, message = ', err);
4246  });
4247}
4248```
4249
4250## MemberType
4251
4252成员类型。
4253
4254**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4255
4256| 名称  |  类型 |  可读  |  可写  |  说明  |
4257| ----- |  ---- |  ---- |  ---- |  ---- |
4258| number |  number | 是 | 是 | number类型。 |
4259| string |  string | 是 | 是 | string类型。|
4260| boolean |  boolean | 是 | 是 | boolean类型。 |
4261
4262## ChangeEvent
4263
4264变更监听的媒体文件类型。
4265
4266**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4267
4268| 名称  |  类型 |  可读  |  可写  |  说明 |
4269| ----- |  ---- |  ---- |  ---- |  ---- |
4270| deviceChange |  string | 是 | 是 |  设备。 |
4271| albumChange |  string | 是 | 是 |  相册。 |
4272| imageChange |  string | 是 | 是 |  图片。 |
4273| audioChange |  string | 是 | 是 |  音频。 |
4274| videoChange |  string | 是 | 是 |  视频。 |
4275| remoteFileChange |  string | 是 | 是 |  远程文件。 |
4276
4277## PeerInfo
4278
4279注册设备的信息。
4280
4281**系统能力**:SystemCapability.FileManagement.UserFileManager.DistributedCore
4282
4283| 名称       | 类型                       | 可读 | 可写 | 说明             |
4284| ---------- | -------------------------- | ---- | ---- | ---------------- |
4285| deviceName | string                     | 是   | 否   | 注册设备的名称。   |
4286| networkId  | string                     | 是   | 否   | 注册设备的网络ID。 |
4287| isOnline   | boolean                    | 是   | 否   | 是否在线。         |
4288
4289## FileType
4290
4291枚举,媒体文件类型。
4292
4293**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4294
4295| 名称  |  值 |  说明 |
4296| ----- |  ---- |  ---- |
4297| IMAGE |  1 |  图片。 |
4298| VIDEO |  2 |  视频。 |
4299| AUDIO |  3 |  音频。 |
4300
4301## PhotoSubType<sup>10+</sup>
4302
4303枚举,不同[FileAsset](#fileasset)的类型。
4304
4305**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4306
4307| 名称  |  值 |  说明 |
4308| ----- |  ---- |  ---- |
4309| DEFAULT |  0 |  默认照片类型。 |
4310| SCREENSHOT |  1 |  截屏录屏文件类型。 |
4311| CAMERA |  2 |  相机拍摄的照片和视频类型。 |
4312
4313## PositionType<sup>10+</sup>
4314
4315枚举,文件位置,表示文件在本地或云端。
4316
4317**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4318
4319| 名称  |  值 |  说明 |
4320| ----- |  ---- |  ---- |
4321| LOCAL |  1 |  文件只存在于本地。 |
4322| CLOUD |  2 |  文件只存在于云端。 |
4323| BOTH |  3 |  文件在本地和云端中都存在。 |
4324
4325## AlbumType<sup>10+</sup>
4326
4327枚举,相册类型,表示是用户相册还是系统预置相册。
4328
4329**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4330
4331| 名称  |  值 |  说明 |
4332| ----- |  ---- |  ---- |
4333| USER |  0 |  用户相册。 |
4334| SYSTEM |  1024 |  系统预置相册。 |
4335
4336## AlbumSubType<sup>10+</sup>
4337
4338枚举,相册子类型,表示具体的相册类型。
4339
4340**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4341
4342| 名称  |  值 |  说明 |
4343| ----- |  ---- |  ---- |
4344| USER_GENERIC |  1 |  用户相册。 |
4345| FAVORITE |  1025 |  收藏夹。 |
4346| VIDEO |  1026 |  视频相册。 |
4347| HIDDEN |  1027 |  隐藏相册。 |
4348| TRASH |  1028 |  回收站。 |
4349| SCREENSHOT |  1029 |  截屏和录屏相册。 |
4350| CAMERA |  1030 |  相机拍摄的照片和视频相册。 |
4351| ANY |  2147483647 |  任意相册。 |
4352
4353## PrivateAlbumType
4354
4355枚举,系统相册类型。
4356
4357此接口即将废弃,请使用[AlbumType](#albumtype10)和[AlbumSubType](#albumsubtype10)和接口替代。
4358
4359**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4360
4361| 名称    |  值 |   说明   |
4362| -----   |  ----  |   ----  |
4363| TYPE_FAVORITE |  0 |  收藏夹相册。 |
4364| TYPE_TRASH |  1 |  回收站相册。 |
4365
4366## AudioKey
4367
4368枚举,音频文件关键信息。
4369
4370**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4371
4372| 名称          |   值              | 说明                                                       |
4373| ------------- | ------------------- | ---------------------------------------------------------- |
4374| URI           | uri                 | 文件uri。                                                   |
4375| DISPLAY_NAME  | display_name        | 显示名字。                                                   |
4376| DATE_ADDED    | date_added          | 添加日期(添加文件时间距1970年1月1日的秒数值)。             |
4377| DATE_MODIFIED | date_modified       | 修改日期(修改文件时间距1970年1月1日的秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)。 |
4378| TITLE         | title               | 文件标题。                                                   |
4379| ARTIST        | artist              | 作者。                                                   |
4380| AUDIOALBUM    | audio_album         | 专辑。                                                   |
4381| DURATION      | duration            | 持续时间(单位:毫秒)。                                    |
4382| FAVORITE      | favorite            | 收藏。                                                   |
4383
4384## ImageVideoKey
4385
4386枚举,图片和视频文件关键信息。
4387
4388**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4389
4390| 名称          | 值              | 说明                                                       |
4391| ------------- | ------------------- | ---------------------------------------------------------- |
4392| URI           | uri                 | 文件uri。                                                   |
4393| FILE_TYPE     | file_type           | 媒体文件类型。                                              |
4394| DISPLAY_NAME  | display_name        | 显示名字。                                                   |
4395| DATE_ADDED    | date_added          | 添加日期(添加文件时间距1970年1月1日的秒数值)。             |
4396| DATE_MODIFIED | date_modified       | 修改日期(修改文件时间距1970年1月1日的秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)。 |
4397| TITLE         | title               | 文件标题。                                                   |
4398| DURATION      | duration            | 持续时间(单位:毫秒)。                                    |
4399| WIDTH         | width               | 图片宽度(单位:像素)。                                    |
4400| HEIGHT        | height              | 图片高度(单位:像素)。                                      |
4401| DATE_TAKEN    | date_taken          | 拍摄日期(文件拍照时间距1970年1月1日的秒数值)。                |
4402| ORIENTATION   | orientation         | 图片文件的方向。                                             |
4403| FAVORITE      | favorite            | 收藏。                                                    |
4404| POSITION<sup>10+</sup>  | position            | 文件位置类型。                               |
4405| DATE_TRASHED<sup>10+</sup>  | date_trashed  | 删除日期(删除文件时间距1970年1月1日的秒数值)。                 |
4406| HIDDEN<sup>10+</sup>  | hidden            | 文件的隐藏状态。                               |
4407| CAMERA_SHOT_KEY<sup>10+</sup>    | camera_shot_key           | 锁屏相机拍照或录像的标记字段(仅开放给系统相机,其key值由系统相机定义)。    |
4408| USER_COMMENT<sup>10+</sup>  | user_comment            | 用户注释信息。                               |
4409
4410## AlbumKey
4411
4412枚举,相册关键信息。
4413
4414**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4415
4416| 名称          | 值              | 说明                                                       |
4417| ------------- | ------------------- | ---------------------------------------------------------- |
4418| URI           | uri                 | 相册uri。                                                   |
4419| FILE_TYPE     | file_type           | 媒体文件类型。                                              |
4420| ALBUM_NAME    | album_name          | 相册名字。                                                   |
4421| DATE_ADDED    | date_added          | 添加日期(添加文件时间距1970年1月1日的秒数值)。             |
4422| DATE_MODIFIED | date_modified       | 修改日期(修改文件时间距1970年1月1日的秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)。 |
4423
4424## PhotoCreateOptions<sup>10+</sup>
4425
4426图片或视频的创建选项。
4427
4428**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4429
4430| 名称                   | 类型                | 必填 | 说明                                              |
4431| ---------------------- | ------------------- | ---- | ------------------------------------------------ |
4432| subType           | [PhotoSubType](#photosubtype10) | 否  | 图片或者视频的子类型。  |
4433| cameraShotKey           | string | 否  | 锁屏相机拍照或录像的标记字段(仅开放给系统相机,其key值由系统相机定义)。  |
4434
4435## FetchOptions
4436
4437检索条件。
4438
4439**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4440
4441| 名称                   | 类型                | 可读 | 可写 | 说明                                              |
4442| ---------------------- | ------------------- | ---- |---- | ------------------------------------------------ |
4443| fetchColumns           | Array&lt;string&gt; | 是   | 是   | 检索条件,指定列名查询,如果该参数为空时默认查询uri、name、fileType(具体字段名称以检索对象定义为准)且使用[get](#get)接口去获取当前对象的其他属性时将会报错。示例:<br />fetchColumns: ['uri', 'title']。 |
4444| predicates           | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md) | 是   | 是   | 谓词查询,显示过滤条件。 |
4445
4446## AlbumFetchOptions
4447
4448相册检索条件。
4449
4450**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4451
4452| 名称                   | 类型                | 可读 | 可写 | 说明                                              |
4453| ---------------------- | ------------------- | ---- |---- | ------------------------------------------------ |
4454| predicates           | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md) | 是   | 是   | 谓词查询,显示过滤条件。 |
4455
4456## ChangeData<sup>10+</sup>
4457
4458监听器回调函数的值。
4459
4460**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4461
4462| 名称    | 类型                        | 可读 | 可写 | 说明                                                         |
4463| ------- | --------------------------- | ---- | ---- | ------------------------------------------------------------ |
4464| type    | [NotifyType](#notifytype10) | 是   | 否   | ChangeData的通知类型。                                       |
4465| uris    | Array&lt;string&gt;         | 是   | 否   | 相同[NotifyType](#notifytype10)的所有uri,可以是FileAsset或Album。 |
4466| subUris | Array&lt;string&gt;         | 是   | 否   | 相册中变动文件的uri数组。                                    |
4467
4468## NotifyType<sup>10+</sup>
4469
4470枚举,通知事件的类型。
4471
4472**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4473
4474| 名称                      | 值   | 说明                             |
4475| ------------------------- | ---- | -------------------------------- |
4476| NOTIFY_ADD                | 0    | 添加文件集或相册通知的类型。     |
4477| NOTIFY_UPDATE             | 1    | 文件集或相册的更新通知类型。     |
4478| NOTIFY_REMOVE             | 2    | 删除文件集或相册的通知类型。     |
4479| NOTIFY_ALBUM_ADD_ASSET    | 3    | 在相册中添加的文件集的通知类型。 |
4480| NOTIFY_ALBUM_REMOVE_ASSET | 4    | 在相册中删除的文件集的通知类型。 |
4481
4482## DefaultChangeUri<sup>10+</sup>
4483
4484枚举,DefaultChangeUri子类型。
4485
4486**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
4487
4488| 名称              | 值                      | 说明                                                         |
4489| ----------------- | ----------------------- | ------------------------------------------------------------ |
4490| DEFAULT_PHOTO_URI | file://media/Photo      | 默认PhotoAsset的Uri,与forSubUri{true}一起使用,将接收所有PhotoAsset的更改通知。 |
4491| DEFAULT_ALBUM_URI | file://media/PhotoAlbum | 默认相册的Uri,与forSubUri{true}一起使用,将接收所有相册的更改通知。 |
4492| DEFAULT_AUDIO_URI | file://media/Audio      | 默认AudioAsset的Uri,与forSubUri{true}一起使用,将接收所有AudioAsset的更改通知。 |
4493
4494