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