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