• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.file.fileAccess (公共文件访问与管理)(系统接口)
2
3fileAccess模块是基于[extension](../../application-models/extensionability-overview.md)机制实现的一个对公共文件访问和操作的框架。该模块一方面对接各类文件管理服务,如存储管理服务等;另一方面为系统应用提供一套统一的文件访问管理接口。存储管理服务可以管理内置存储部分目录,以及共享盘、U盘、SD卡等设备上的资源。
4
5>**说明:**
6>
7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> - 本模块为系统接口。
9> - 当前只支持FilePicker、文件管理器调用。
10
11## 导入模块
12
13```ts
14import fileAccess from '@ohos.file.fileAccess';
15```
16
17## 常量
18
19表示用于监听设备上线和下线通知的URI,用作注册监听的URI。
20
21**模型约束**:仅可在Stage模型下使用。
22
23**系统能力**:SystemCapability.FileManagement.UserFileService24
25**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
26
27| 名称 | 类型                        | 只读 | 可写 | 说明                                                      |
28| ---- | --------------------------- | ---- | ---- | --------------------------------------------------------- |
29| DEVICES_URI<sup>11+</sup>  | string | 是   | 否   | 监听设备上线,下线通知,作为注册监听的URI。                    |
30
31## fileAccess.getFileAccessAbilityInfo
32
33getFileAccessAbilityInfo() : Promise&lt;Array&lt;Want&gt;&gt;
34
35以异步方法获取系统内extension配置为fileAccess类型的所有Want信息。使用Promise异步回调。
36
37**模型约束**:此接口仅可在Stage模型下使用。
38
39**系统能力**:SystemCapability.FileManagement.UserFileService
40
41**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
42
43**返回值:**
44
45| 类型 | 说明 |
46| --- | -- |
47| Promise&lt;Array&lt;[Want](../apis-ability-kit/js-apis-app-ability-want.md)&gt;&gt; | 表示当前系统配置fileAccess的所有文件管理类服务。 |
48
49**错误码:**
50
51接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
52
53**示例:**
54
55  ```ts
56  import { BusinessError } from '@ohos.base';
57  import Want from '@ohos.app.ability.Want';
58  async function getFileAccessAbilityInfo() {
59    let wantInfos: Array<Want> = [];
60    try {
61      wantInfos = await fileAccess.getFileAccessAbilityInfo();
62      console.log("getFileAccessAbilityInfo data " + JSON.stringify(wantInfos));
63    } catch (err) {
64      let error: BusinessError = err as BusinessError;
65      console.error("getFileAccessAbilityInfo failed, errCode:" + error.code + ", errMessage:" + error.message);
66    }
67  }
68  ```
69
70## fileAccess.getFileAccessAbilityInfo
71
72getFileAccessAbilityInfo(callback: AsyncCallback&lt;Array&lt;Want&gt;&gt;): void
73
74以异步方法获取系统内extension配置为fileAccess类型的所有Want信息。使用callback异步回调。
75
76**模型约束**:此接口仅可在Stage模型下使用。
77
78**系统能力**:SystemCapability.FileManagement.UserFileService
79
80**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
81
82**参数:**
83
84| 参数名 | 类型 | 必填 | 说明 |
85| --- | --- | --- | -- |
86| callback | AsyncCallback&lt;Array&lt;[Want](../apis-ability-kit/js-apis-app-ability-want.md)&gt;&gt; | 是 | 表示当前系统配置fileAccess的所有文件管理类服务。 |
87
88**错误码:**
89
90接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
91
92**示例:**
93
94  ```ts
95  import { BusinessError } from '@ohos.base';
96  import Want from '@ohos.app.ability.Want';
97  async function getFileAccessAbilityInfo() {
98    try {
99      fileAccess.getFileAccessAbilityInfo((err: BusinessError, wantInfos: Array<Want>) => {
100        if (err) {
101          console.error("Failed to getFileAccessAbilityInfo in async, errCode:" + err.code + ", errMessage:" + err.message);
102          return;
103        }
104        console.log("getFileAccessAbilityInfo data " + JSON.stringify(wantInfos));
105      });
106    } catch (err) {
107      let error: BusinessError = err as BusinessError;
108      console.error("getFileAccessAbilityInfo failed, errCode:" + error.code + ", errMessage:" + error.message);
109    }
110  }
111  ```
112
113## fileAccess.createFileAccessHelper
114
115createFileAccessHelper(context: Context, wants: Array&lt;Want&gt;) : FileAccessHelper
116
117以同步方法创建连接指定wants的helper对象。
118
119**模型约束**:此接口仅可在Stage模型下使用。
120
121**系统能力**:SystemCapability.FileManagement.UserFileService
122
123**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
124
125**参数:**
126
127| 参数名 | 类型 | 必填 | 说明 |
128| --- | --- | --- | -- |
129| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 代表ability的上下文的能力。 |
130| wants | Array&lt;[Want](../apis-ability-kit/js-apis-app-ability-want.md)&gt; | 是 | Want是一种基本通信组件,主要用于服务拉起。 |
131
132**返回值:**
133
134| 类型 | 说明 |
135| --- | -- |
136| [FileAccessHelper](#fileaccesshelper) | 提供文件访问和操作能力的helper对象。 |
137
138**错误码:**
139
140接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
141
142**示例:**
143
144  ```ts
145  import { BusinessError } from '@ohos.base';
146  import Want from '@ohos.app.ability.Want';
147  import common from '@ohos.app.ability.common';
148  // 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext
149  let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
150  function createFileAccessHelper01(context: common.UIAbilityContext) {
151    let fileAccessHelper: fileAccess.FileAccessHelper;
152    // wantInfos 从getFileAccessAbilityInfo()获取
153    let wantInfos: Array<Want> = [
154      {
155        bundleName: "com.ohos.UserFile.ExternalFileManager",
156        abilityName: "FileExtensionAbility",
157      },
158    ]
159    try {
160      // context 是EntryAbility 传过来的context
161      fileAccessHelper = fileAccess.createFileAccessHelper(context, wantInfos);
162      if (!fileAccessHelper) {
163        console.error("createFileAccessHelper interface returns an undefined object");
164      }
165    } catch (err) {
166      let error: BusinessError = err as BusinessError;
167      console.error("createFileAccessHelper failed, errCode:" + error.code + ", errMessage:" + error.message);
168    }
169  }
170  ```
171
172## fileAccess.createFileAccessHelper
173
174createFileAccessHelper(context: Context) : FileAccessHelper
175
176以同步方法创建连接当前系统内所有文件管理服务的helper对象。
177
178**模型约束**:此接口仅可在Stage模型下使用。
179
180**系统能力**:SystemCapability.FileManagement.UserFileService
181
182**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
183
184**参数:**
185
186| 参数名 | 类型 | 必填 | 说明 |
187| --- | --- | --- | -- |
188| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | ability的上下文的能力。 |
189
190**返回值:**
191
192| 类型 | 说明 |
193| --- | -- |
194| [FileAccessHelper](#fileaccesshelper) | 提供文件访问和操作的能力的helper对象。 |
195
196**错误码:**
197
198接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
199
200**示例:**
201
202  ```ts
203  import { BusinessError } from '@ohos.base';
204  import common from '@ohos.app.ability.common';
205  // 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext
206  let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
207  function createFileAccessHelper02(context: common.UIAbilityContext) {
208    let fileAccessHelperAllServer: fileAccess.FileAccessHelper;
209    // 创建连接系统内所有配置fileAccess的文件管理类服务的helper对象
210    try {
211      // context 是EntryAbility 传过来的context
212      fileAccessHelperAllServer = fileAccess.createFileAccessHelper(context);
213      if (!fileAccessHelperAllServer) {
214        console.error("createFileAccessHelper interface returns an undefined object");
215      }
216    } catch (err) {
217      let error: BusinessError = err as BusinessError;
218      console.error("createFileAccessHelper failed, errCode:" + error.code + ", errMessage:" + error.message);
219    }
220  }
221  ```
222
223## FileInfo
224
225表示文件(夹)属性信息和接口能力。
226
227**模型约束**:此接口仅可在Stage模型下使用。
228
229**系统能力**:SystemCapability.FileManagement.UserFileService
230
231**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
232
233### 属性
234
235| 名称 | 类型   | 只读 | 可写 | 说明     |
236| ------ | ------ | -------- | ------ | -------- |
237| uri | string | 是 | 否 | 文件(夹)的uri。 |
238| relativePath<sup>10+</sup> | string | 是 | 否 | 文件(夹)的相对路径。 |
239| fileName | string | 是 | 否 | 文件(夹)的名称。 |
240| mode | number | 是 | 否 | 文件(夹)的权限信息。 |
241| size | number | 是 | 否 |  文件(夹)的大小。 |
242| mtime | number | 是 | 否 |  文件(夹)的修改时间。 |
243| mimeType | string | 是 | 否 |  文件(夹)的媒体资源类型。 |
244
245### listFile
246
247listFile(filter?: Filter) : FileIterator
248
249以同步方法从某个目录,基于过滤器,获取下一级符合条件的文件(夹)信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备过滤,外置存储设备不支持过滤。
250
251**模型约束**:此接口仅可在Stage模型下使用。
252
253**系统能力**:SystemCapability.FileManagement.UserFileService
254
255**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
256
257**参数:**
258
259| 参数名 | 类型 | 必填 | 说明 |
260| --- | --- | -- | -- |
261| filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象。  |
262
263**返回值:**
264
265| 类型 | 说明 |
266| --- | -- |
267| [FileIterator](#fileiterator) | 文件(夹)信息的迭代器对象FileIterator。 |
268
269**错误码:**
270
271接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
272
273**示例:**
274
275  ```ts
276  import { BusinessError } from '@ohos.base';
277  // fileInfoDir 表示某个目录信息
278  // let filter = { suffix : [".txt", ".jpg", ".xlsx"] };
279  let fileInfoDir :Array<fileAccess.FileInfo> = [];
280  let subfileInfos: Array<fileAccess.FileInfo> = [];
281  let isDone: boolean = false;
282  try {
283    for (let i = 0; i < fileInfoDir.length; ++i) {
284      let fileIterator = fileInfoDir[i].listFile();
285      // 含过滤器实现的listFile
286      // let fileIterator = fileInfoDir.listFile(filter);
287      if (!fileIterator) {
288        console.error("listFile interface returns an undefined object");
289      }
290      while (!isDone) {
291        let result = fileIterator.next();
292        console.log("next result = " + JSON.stringify(result));
293        isDone = result.done;
294        if (!isDone) {
295          subfileInfos.push(result.value);
296        }
297      }
298    }
299  } catch (err) {
300    let error: BusinessError = err as BusinessError;
301    console.error("listFile failed, errCode:" + error.code + ", errMessage:" + error.message);
302  }
303  ```
304
305### scanFile
306
307scanFile(filter?: Filter) : FileIterator;
308
309以同步方法从某个目录,基于过滤器,递归获取符合条件的文件信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备。
310
311**模型约束**:此接口仅可在Stage模型下使用。
312
313**系统能力**:SystemCapability.FileManagement.UserFileService
314
315**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
316
317**参数:**
318
319| 参数名 | 类型 | 必填 | 说明 |
320| --- | --- | -- | -- |
321| filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象。  |
322
323**返回值:**
324
325| 类型 | 说明 |
326| --- | -- |
327| [FileIterator](#fileiterator) | 文件信息的迭代器对象FileIterator。 |
328
329**错误码:**
330
331接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
332
333**示例:**
334
335  ```ts
336  import { BusinessError } from '@ohos.base';
337  // fileInfoDir 表示某个目录信息
338  // let filter = {suffix : [".txt", ".jpg", ".xlsx"]};
339  let fileInfoDir: Array<fileAccess.FileInfo> = [];
340  let subfileInfos: Array<fileAccess.FileInfo> = [];
341  let isDone: boolean = false;
342  try {
343    for (let i = 0; i < fileInfoDir.length; ++i) {
344      let fileIterator = fileInfoDir[i].scanFile();
345      // 含过滤器实现的scanFile
346      // let fileIterator = fileInfoDir.scanFile(filter);
347      if (!fileIterator) {
348        console.error("scanFile interface returns an undefined object");
349      }
350      while (!isDone) {
351        let result = fileIterator.next();
352        console.log("next result = " + JSON.stringify(result));
353        isDone = result.done;
354        if (!isDone) {
355          subfileInfos.push(result.value);
356        }
357      }
358    }
359  } catch (err) {
360    let error: BusinessError = err as BusinessError;
361    console.error("scanFile failed, errCode:" + error.code + ", errMessage:" + error.message);
362  }
363  ```
364
365## FileIterator
366
367表示文件夹的迭代器对象。
368
369**模型约束**:此接口仅可在Stage模型下使用。
370
371**系统能力**:SystemCapability.FileManagement.UserFileService
372
373**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
374
375### next
376
377next() : { value: FileInfo, done: boolean }
378
379可以通过next同步方法获取下一级文件(夹)信息。
380
381**模型约束**:此接口仅可在Stage模型下使用。
382
383**系统能力**:SystemCapability.FileManagement.UserFileService
384
385**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
386
387**返回值:**
388
389| 类型 | 说明 |
390| --- | -- |
391| {value: [FileInfo](#fileinfo), done: boolean} | 通过next遍历文件夹,直到done返回true结束;value字段返回fileInfo。|
392
393**错误码:**
394
395接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
396
397## RootInfo
398
399表示设备的根属性信息和接口能力。
400
401**模型约束**:此接口仅可在Stage模型下使用。
402
403**系统能力**:SystemCapability.FileManagement.UserFileService
404
405**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
406
407### 属性
408
409| 名称 | 类型   | 只读 | 可写 | 说明     |
410| ------ | ------ | -------- | ------ | -------- |
411| deviceType | number | 是 | 否 |设备类型。 |
412| uri | string | 是 | 否 | 设备根目录Uri。 |
413| relativePath<sup>10+</sup> | string | 是 | 否 | 根目录的相对路径。 |
414| displayName | string | 是 | 否 | 设备名称。 |
415| deviceFlags | number | 是 | 否 | 设备支持的能力。 |
416
417### listFile
418
419listFile(filter?: Filter) : FileIterator
420
421以同步方法从某设备根节点开始,基于过滤器,获取第一级符合条件的文件(夹)信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备过滤,外置存储设备不支持过滤。
422
423**模型约束**:此接口仅可在Stage模型下使用。
424
425**系统能力**:SystemCapability.FileManagement.UserFileService
426
427**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
428
429**参数:**
430
431| 参数名 | 类型 | 必填 | 说明 |
432| --- | --- | -- | -- |
433| filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象。  |
434
435**返回值:**
436
437| 类型 | 说明 |
438| --- | -- |
439| [FileIterator](#fileiterator) | 文件(夹)信息的迭代器对象FileIterator。 |
440
441**错误码:**
442
443接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
444
445**示例:**
446
447  ```ts
448  import { BusinessError } from '@ohos.base';
449  // rootInfo 从getRoots()获取
450  // let filter = {suffix : [".txt", ".jpg", ".xlsx"]};
451  let rootInfo: Array<fileAccess.FileInfo> = [];
452  let fileInfos: Array<fileAccess.FileInfo> = [];
453  let isDone: boolean = false;
454  try {
455    for (let i = 0; i < rootInfo.length; ++i) {
456      let fileIterator = rootInfo[i].listFile();
457      // 含过滤器实现的listFile
458      // let fileIterator = rootInfo.listFile(filter);
459      if (!fileIterator) {
460        console.error("listFile interface returns an undefined object");
461      }
462      while (!isDone) {
463        let result = fileIterator.next();
464        console.log("next result = " + JSON.stringify(result));
465        isDone = result.done;
466        if (!isDone) {
467          fileInfos.push(result.value);
468        }
469      }
470    }
471  } catch (err) {
472    let error: BusinessError = err as BusinessError;
473    console.error("listFile failed, errCode:" + error.code + ", errMessage:" + error.message);
474  }
475  ```
476
477### scanFile
478
479scanFile(filter?: Filter) : FileIterator
480
481以同步方法从某设备根节点开始,基于过滤器,递归获取符合条件的文件信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备。
482
483**模型约束**:此接口仅可在Stage模型下使用。
484
485**系统能力**:SystemCapability.FileManagement.UserFileService
486
487**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
488
489**参数:**
490
491| 参数名 | 类型 | 必填 | 说明 |
492| --- | --- | -- | -- |
493| filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象。  |
494
495**返回值:**
496
497| 类型 | 说明 |
498| --- | -- |
499| [FileIterator](#fileiterator) | 文件信息的迭代器对象FileIterator。 |
500
501**错误码:**
502
503接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
504
505**示例:**
506
507  ```ts
508  import { BusinessError } from '@ohos.base';
509  // rootInfo 从 getRoots()获取
510  // let filter = {suffix : [".txt", ".jpg", ".xlsx"]};
511  let rootInfo: Array<fileAccess.FileInfo> = [];
512  let fileInfos: Array<fileAccess.FileInfo> = [];
513  let isDone: boolean = false;
514  try {
515    for (let i = 0; i < rootInfo.length; ++i) {
516      let fileIterator = rootInfo[i].scanFile();
517      // 含过滤器实现的scanFile
518      // let fileIterator = rootInfo.scanFile(filter);
519      if (!fileIterator) {
520        console.error("scanFile interface returns undefined object");
521      }
522      while (!isDone) {
523        let result = fileIterator.next();
524        console.log("next result = " + JSON.stringify(result));
525        isDone = result.done;
526        if (!isDone) {
527          fileInfos.push(result.value);
528        }
529      }
530    }
531  } catch (err) {
532    let error: BusinessError = err as BusinessError;
533    console.error("scanFile failed, errCode:" + error.code + ", errMessage:" + error.message);
534  }
535  ```
536
537## RootIterator
538
539表示设备根目录的迭代器对象。
540
541**模型约束**:此接口仅可在Stage模型下使用。
542
543**系统能力**:SystemCapability.FileManagement.UserFileService
544
545**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
546
547### next
548
549next() : { value: RootInfo, done: boolean }
550
551通过next同步方法获取下一级设备根目录。
552
553**模型约束**:此接口仅可在Stage模型下使用。
554
555**系统能力**:SystemCapability.FileManagement.UserFileService
556
557**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
558
559**返回值:**
560
561| 类型 | 说明 |
562| --- | -- |
563| {value: [RootInfo](#rootinfo), done: boolean} | 通过next遍历文件夹,直到done返回true结束;value字段返回rootInfo。|
564
565**错误码:**
566
567接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
568
569## FileAccessHelper
570
571FileAccessHelper对象。
572
573**系统能力**:SystemCapability.FileManagement.UserFileService
574
575**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
576
577### getRoots
578
579getRoots() : Promise&lt;RootIterator&gt;
580
581以异步方法获取helper对象连接的文件管理服务类的设备根节点信息。使用Promise异步回调。
582该方法返回迭代器对象RootIterator,然后通过[next](#next-1)方法返回[RootInfo](#rootinfo)。
583
584**系统能力**:SystemCapability.FileManagement.UserFileService
585
586**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
587
588**返回值:**
589
590| 类型 | 说明 |
591| --- | -- |
592| Promise&lt;[RootIterator](#rootiterator)&gt; | 根设备目录信息组成迭代器对象。 |
593
594**错误码:**
595
596接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
597
598**示例:**
599
600  ```ts
601async function getRoots() {
602  let rootIterator: fileAccess.RootIterator;
603  let rootinfos: Array<fileAccess.RootInfo> = [];
604  let isDone: boolean = false;
605  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
606  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
607  try {
608    if (fileAccessHelper != undefined) {
609      rootIterator = await fileAccessHelper.getRoots();
610      if (!rootIterator) {
611        console.error("getRoots interface returns an undefined object");
612      }
613      while (!isDone) {
614        let result = rootIterator.next();
615        console.log("next result = " + JSON.stringify(result));
616        isDone = result.done;
617        if (!isDone) {
618          rootinfos.push(result.value);
619        }
620      }
621    }
622  } catch (err) {
623    let error: BusinessError = err as BusinessError;
624    console.error("getRoots failed, errCode:" + error.code + ", errMessage:" + error.message);
625  }
626}
627  ```
628
629### getRoots
630
631getRoots(callback:AsyncCallback&lt;RootIterator&gt;) : void
632
633以异步方法获取helper对象连接的文件管理服务类的设备根节点信息。使用callback异步回调。
634callback带回迭代器对象RootIterator,然后通过[next](#next-1)方法返回[RootInfo](#rootinfo)。
635
636**系统能力**:SystemCapability.FileManagement.UserFileService
637
638**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
639
640**参数:**
641
642| 参数名 | 类型 | 必填 | 说明 |
643| --- | --- | --- | -- |
644| callback | AsyncCallback&lt;[RootIterator](#rootiterator)&gt; | 是 | 根设备目录信息组成迭代器对象。 |
645
646**错误码:**
647
648接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
649
650**示例:**
651
652  ```ts
653  import { BusinessError } from '@ohos.base';
654  async function getRoots() {
655    let rootinfos: Array<fileAccess.RootInfo> = [];
656    let isDone: boolean = false;
657    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
658    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
659    try {
660      if (fileAccessHelper != undefined) {
661        fileAccessHelper.getRoots((err: BusinessError, rootIterator: fileAccess.RootIterator) => {
662          if (err) {
663            console.error("Failed to getRoots in async, errCode:" + err.code + ", errMessage:" + err.message);
664          }
665          while (!isDone) {
666            let result = rootIterator.next();
667            console.log("next result = " + JSON.stringify(result));
668            isDone = result.done;
669            if (!isDone) {
670              rootinfos.push(result.value);
671            }
672          }
673        });
674      }
675    } catch (err) {
676      let error: BusinessError = err as BusinessError;
677      console.error("getRoots failed, errCode:" + error.code + ", errMessage:" + error.message);
678    }
679  }
680  ```
681
682### createFile
683
684createFile(uri: string, displayName: string) : Promise&lt;string&gt;
685
686以异步方法创建文件到指定目录,返回新文件uri。使用Promise异步回调。
687
688**系统能力**:SystemCapability.FileManagement.UserFileService
689
690**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
691
692**参数:**
693
694| 参数名 | 类型 | 必填 | 说明 |
695| --- | --- | --- | -- |
696| uri | string | 是 | 表示需要创建文件的父目录的Uri。 |
697| displayName | string | 是 | 待创建文件的名称。默认本地文件需要添加后缀。 |
698
699**返回值:**
700
701| 类型 | 说明 |
702| --- | -- |
703| Promise&lt;string&gt; | 新创建的文件的uri。 |
704
705**错误码:**
706
707接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
708
709**示例:**
710
711  ```ts
712  import { BusinessError } from '@ohos.base';
713  async function createFile() {
714    // 以内置存储目录为例
715    // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
716    // 开发者应根据自己实际获取的uri进行开发
717    let sourceUri: string = "file://docs/storage/Users/currentUser/Download";
718    let displayName: string = "file1";
719    let fileUri: string;
720    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
721    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
722    try {
723        if (fileAccessHelper != undefined) {
724        fileUri = await fileAccessHelper.createFile(sourceUri, displayName);
725        if (!fileUri) {
726          console.error("createFile return undefined object");
727          return;
728        }
729        console.log("createFile sucess, fileUri: " + JSON.stringify(fileUri));
730      }
731    } catch (err) {
732      let error: BusinessError = err as BusinessError;
733      console.error("createFile failed, errCode:" + error.code + ", errMessage:" + error.message);
734    }
735  }
736  ```
737
738### createFile
739
740createFile(uri: string, displayName: string, callback: AsyncCallback&lt;string&gt;) : void
741
742以异步方法创建文件到指定目录,返回新文件uri。使用callback异步回调。
743
744**系统能力**:SystemCapability.FileManagement.UserFileService
745
746**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
747
748**参数:**
749
750| 参数名 | 类型 | 必填 | 说明 |
751| --- | --- | --- | -- |
752| uri | string | 是 | 表示需要创建文件的父目录的Uri。 |
753| displayName | string | 是 | 待创建文件的名称。默认本地文件需要添加后缀。 |
754| callback | AsyncCallback&lt;string&gt; | 是 | 新创建的文件的uri。 |
755
756**错误码:**
757
758接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
759
760**示例:**
761
762  ```ts
763  import { BusinessError } from '@ohos.base';
764  // 以内置存储目录为例
765  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
766  // 开发者应根据自己实际获取的uri进行开发
767  let sourceUri: string = "file://docs/storage/Users/currentUser/Download";
768  let displayName: string = "file1";
769  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
770  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
771  try {
772    if (fileAccessHelper != undefined) {
773      fileAccessHelper.createFile(sourceUri, displayName, (err: BusinessError, fileUri: string) => {
774        if (err) {
775          console.error("Failed to createFile in async, errCode:" + err.code + ", errMessage:" + err.message);
776        }
777        console.log("createFile sucess, fileUri: " + JSON.stringify(fileUri));
778      });
779    }
780  } catch (err) {
781    let error: BusinessError = err as BusinessError;
782    console.error("createFile failed, errCode:" + error.code + ", errMessage:" + error.message);
783  }
784  ```
785
786### mkDir
787
788mkDir(parentUri: string, displayName: string) : Promise&lt;string&gt;
789
790以异步方法创建文件夹到指定目录,返回文件夹uri。使用Promise异步回调。
791
792**系统能力**:SystemCapability.FileManagement.UserFileService
793
794**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
795
796**参数:**
797
798| 参数名 | 类型 | 必填 | 说明 |
799| --- | --- | --- | -- |
800| parentUri | string | 是 | 表示需要创建文件夹的父目录的Uri。 |
801| displayName | string | 是 | 待创建文件夹的名称。|
802
803**返回值:**
804
805| 类型 | 说明 |
806| --- | -- |
807| Promise&lt;string&gt; | 新创建的文件夹的uri。 |
808
809**错误码:**
810
811接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
812
813**示例:**
814
815  ```ts
816  import { BusinessError } from '@ohos.base';
817  // 以内置存储目录为例
818  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
819  // 开发者应根据自己实际获取的uri进行开发
820  async function createDirectory() {
821    let sourceUri: string = "file://docs/storage/Users/currentUser/Download";
822    let dirName: string = "dirTest";
823    let dirUri: string;
824    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
825    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
826    try {
827      if (fileAccessHelper != undefined) {
828        dirUri = await fileAccessHelper.mkDir(sourceUri, dirName);
829        if (!dirUri) {
830          console.error("mkDir return undefined object");
831        } else {
832          console.log("mkDir success, dirUri: " + JSON.stringify(dirUri));
833        }
834      }
835    } catch (err) {
836      let error: BusinessError = err as BusinessError;
837      console.error("mkDir failed, errCode:" + error.code + ", errMessage:" + error.message);
838    }
839  }
840  ```
841
842### mkDir
843
844mkDir(parentUri: string, displayName: string, callback: AsyncCallback&lt;string&gt;) : void
845
846以异步方法创建文件夹到指定目录,返回文件夹uri。使用callback异步回调。
847
848**系统能力**:SystemCapability.FileManagement.UserFileService
849
850**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
851
852**参数:**
853
854| 参数名 | 类型 | 必填 | 说明 |
855| --- | --- | --- | -- |
856| parentUri | string | 是 | 表示需要创建文件夹的父目录的Uri。 |
857| displayName | string | 是 | 待创建文件夹的名称。|
858| callback | AsyncCallback&lt;string&gt; | 是 | 新创建的文件夹的uri。 |
859
860**错误码:**
861
862接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
863
864**示例:**
865
866  ```ts
867  import { BusinessError } from '@ohos.base';
868  // 以内置存储目录为例
869  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
870  // 开发者应根据自己实际获取的uri进行开发
871  let sourceUri: string = "file://docs/storage/Users/currentUser/Download";
872  let dirName: string = "dirTest";
873  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
874  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
875  try {
876    if (fileAccessHelper != undefined) {
877      fileAccessHelper.mkDir(sourceUri, dirName, (err: BusinessError, dirUri: string) => {
878        if (err) {
879          console.error("Failed to mkDir in async, errCode:" + err.code + ", errMessage:" + err.message);
880        }
881        console.log("mkDir sucess, dirUri: " + JSON.stringify(dirUri));
882      });
883    }
884  } catch (err) {
885    let error: BusinessError = err as BusinessError;
886    console.error("mkDir failed, errCode:" + error.code + ", errMessage:" + error.message);
887  }
888  ```
889
890### openFile
891
892openFile(uri: string, flags: OPENFLAGS) : Promise&lt;number&gt;
893
894以异步方法打开文件,返回文件描述符。使用Promise异步回调。
895
896**系统能力**:SystemCapability.FileManagement.UserFileService
897
898**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
899
900**参数:**
901
902| 参数名 | 类型 | 必填 | 说明 |
903| --- | --- | --- | -- |
904| uri | string | 是 | 待打开文件的uri。 |
905| flags | [OPENFLAGS](#openflags) | 是 | 文件打开的标志。 |
906
907**返回值:**
908
909| 类型 | 说明 |
910| --- | -- |
911| Promise&lt;number&gt; | 文件描述符。 |
912
913**错误码:**
914
915接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
916
917**示例:**
918
919  ```ts
920  import { BusinessError } from '@ohos.base';
921  async function openFile01() {
922    // 以内置存储目录为例
923    // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
924    // 开发者应根据自己实际获取的uri进行开发
925    let targetUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
926    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
927    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
928    try {
929      if (fileAccessHelper != undefined) {
930        let fd = await fileAccessHelper.openFile(targetUri, fileAccess.OPENFLAGS.READ);
931      }
932    } catch (err) {
933      let error: BusinessError = err as BusinessError;
934      console.error("openFile failed, errCode:" + error.code + ", errMessage:" + error.message);
935    }
936  }
937  ```
938
939### openFile
940
941openFile(uri: string, flags: OPENFLAGS, callback: AsyncCallback&lt;number&gt;) : void
942
943以异步方法打开文件,返回文件描述符。使用callback异步回调。
944
945**系统能力**:SystemCapability.FileManagement.UserFileService
946
947**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
948
949**参数:**
950
951| 参数名 | 类型 | 必填 | 说明 |
952| --- | --- | --- | -- |
953| uri | string | 是 | 待打开文件的uri。 |
954| flags | [OPENFLAGS](#openflags) | 是 | 文件打开的标志。 |
955| callback | AsyncCallback&lt;number&gt; | 是 | 文件描述符。 |
956
957**错误码:**
958
959接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
960
961**示例:**
962
963  ```ts
964  import { BusinessError } from '@ohos.base';
965  // 以内置存储目录为例
966  // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
967  // 开发者应根据自己实际获取的uri进行开发
968  let targetUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
969  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
970  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
971  try {
972    if (fileAccessHelper != undefined) {
973      fileAccessHelper.openFile(targetUri, fileAccess.OPENFLAGS.READ, (err: BusinessError, fd: number) => {
974        if (err) {
975          console.error("Failed to openFile in async, errCode:" + err.code + ", errMessage:" + err.message);
976        }
977        console.log("openFile sucess, fd: " + fd);
978      });
979    }
980  } catch (err) {
981    let error: BusinessError = err as BusinessError;
982    console.error("openFile failed, errCode:" + error.code + ", errMessage:" + error.message);
983  }
984  ```
985
986### delete
987
988delete(uri: string) : Promise&lt;number&gt;
989
990以异步方法删除文件(夹),返回错误码。使用Promise异步回调。
991
992**系统能力**:SystemCapability.FileManagement.UserFileService
993
994**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
995
996**参数:**
997
998| 参数名 | 类型 | 必填 | 说明 |
999| --- | --- | --- | -- |
1000| uri | string | 是 | 待删除文件(夹)的uri。 |
1001
1002**返回值:**
1003
1004| 类型 | 说明 |
1005| --- | -- |
1006| Promise&lt;number&gt; | 删除操作的错误码。 |
1007
1008**错误码:**
1009
1010接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1011
1012**示例:**
1013
1014  ```ts
1015  import { BusinessError } from '@ohos.base';
1016  async function deleteFile01() {
1017    // 以内置存储目录为例
1018    // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
1019    // 开发者应根据自己实际获取的uri进行开发
1020    let targetUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1021    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1022    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1023    try {
1024      if (fileAccessHelper != undefined) {
1025        let code = await fileAccessHelper.delete(targetUri);
1026        if (code != 0)
1027          console.error("delete failed, code " + code);
1028      }
1029    } catch (err) {
1030      let error: BusinessError = err as BusinessError;
1031      console.error("delete failed, errCode:" + error.code + ", errMessage:" + error.message);
1032    }
1033  }
1034  ```
1035
1036### delete
1037
1038delete(uri: string, callback: AsyncCallback&lt;number&gt;) : void
1039
1040以异步方法删除文件(夹),返回错误码。使用callback异步回调。
1041
1042**系统能力**:SystemCapability.FileManagement.UserFileService
1043
1044**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1045
1046**参数:**
1047
1048| 参数名 | 类型 | 必填 | 说明 |
1049| --- | --- | --- | -- |
1050| uri | string | 是 | 待删除文件(夹)的uri。 |
1051| callback | AsyncCallback&lt;number&gt; | 是 | 删除操作的错误码。 |
1052
1053**错误码:**
1054
1055接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1056
1057**示例:**
1058
1059  ```ts
1060  import { BusinessError } from '@ohos.base';
1061  // 以内置存储目录为例
1062  // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
1063  // 开发者应根据自己实际获取的uri进行开发
1064  let targetUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1065  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1066  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1067  try {
1068    if (fileAccessHelper != undefined) {
1069      fileAccessHelper.delete(targetUri, (err: BusinessError, code: number) => {
1070        if (err) {
1071          console.error("Failed to delete in async, errCode:" + err.code + ", errMessage:" + err.message);
1072        }
1073        console.log("delete sucess, code: " + code);
1074      });
1075    }
1076  } catch (err) {
1077    let error: BusinessError = err as BusinessError;
1078    console.error("delete failed, errCode:" + error.code + ", errMessage:" + error.message);
1079  }
1080  ```
1081
1082### move
1083
1084move(sourceFile: string, destFile: string) : Promise&lt;string&gt;
1085
1086以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用Promise异步回调。目前仅支持设备内移动,跨设备不支持移动。
1087
1088**系统能力**:SystemCapability.FileManagement.UserFileService
1089
1090**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1091
1092**参数:**
1093
1094| 参数名 | 类型 | 必填 | 说明 |
1095| --- | --- | --- | -- |
1096| sourceFile | string | 是 | 待移动的源文件(夹)的uri。 |
1097| destFile | string | 是 | 目标文件夹的uri。 |
1098
1099**返回值:**
1100
1101| 类型 | 说明 |
1102| ----- | ------ |
1103| Promise&lt;string&gt; | 新路径下的文件(夹)的uri。 |
1104
1105**错误码:**
1106
1107接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1108
1109**示例:**
1110
1111  ```ts
1112  import { BusinessError } from '@ohos.base';
1113  async function moveFile01() {
1114    // 以内置存储目录为例
1115    // 示例代码sourceFile destFile表示Download目录下文件和文件夹,该uri是对应的fileInfo中uri
1116    // 开发者应根据自己实际获取的uri进行开发
1117    let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1118    let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1119    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1120    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1121    try {
1122      if (fileAccessHelper != undefined) {
1123        let fileUri = await fileAccessHelper.move(sourceFile, destFile);
1124        console.log("move sucess, fileUri: " + JSON.stringify(fileUri));
1125      }
1126    } catch (err) {
1127      let error: BusinessError = err as BusinessError;
1128      console.error("move failed, errCode:" + error.code + ", errMessage:" + error.message);
1129    }
1130  }
1131  ```
1132
1133### move
1134
1135move(sourceFile: string, destFile: string, callback: AsyncCallback&lt;string&gt;) : void
1136
1137以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用callback异步回调。目前仅支持设备内移动,跨设备不支持移动。
1138
1139**系统能力**:SystemCapability.FileManagement.UserFileService
1140
1141**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1142
1143**参数:**
1144
1145| 参数名 | 类型 | 必填 | 说明 |
1146| --- | --- | --- | -- |
1147| sourceFile | string | 是 | 待移动的源文件(夹)的uri。 |
1148| destFile | string | 是 | 目标文件夹的uri。 |
1149| callback | AsyncCallback&lt;string&gt; | 是 | 新路径下的文件(夹)的uri。 |
1150
1151**错误码:**
1152
1153接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1154
1155**示例:**
1156
1157  ```ts
1158  import { BusinessError } from '@ohos.base';
1159  // 以内置存储目录为例
1160  // 示例代码sourceFile destFile表示Download目录下文件和文件夹,该uri是对应的fileInfo中uri
1161  // 开发者应根据自己实际获取的uri进行开发
1162  let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1163  let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1164  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1165  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1166  try {
1167    if (fileAccessHelper != undefined) {
1168      fileAccessHelper.move(sourceFile, destFile, (err: BusinessError, fileUri: string) => {
1169        if (err) {
1170          console.error("Failed to move in async, errCode:" + err.code + ", errMessage:" + err.message);
1171        }
1172        console.log("move sucess, fileUri: " + JSON.stringify(fileUri));
1173      });
1174    }
1175  } catch (err) {
1176    let error: BusinessError = err as BusinessError;
1177    console.error("move failed, errCode:" + error.code + ", errMessage:" + error.message);
1178  }
1179  ```
1180
1181### rename
1182
1183rename(uri: string, displayName: string) : Promise&lt;string&gt;
1184
1185以异步方法重命名文件(夹),返回重命名后的文件(夹)的Uri。使用Promise异步回调。
1186
1187**系统能力**:SystemCapability.FileManagement.UserFileService
1188
1189**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1190
1191**参数:**
1192
1193| 参数名 | 类型 | 必填 | 说明 |
1194| --- | --- | --- | -- |
1195| uri | string | 是 | 源文件(夹)的uri。 |
1196| displayName | string | 是 | 文件(夹)名,支持带后缀。 |
1197
1198**返回值:**
1199
1200| 类型 | 说明 |
1201| --- | -- |
1202| Promise&lt;string&gt; | 重命名后的文件(夹)的uri。 |
1203
1204**错误码:**
1205
1206接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1207
1208**示例:**
1209
1210  ```ts
1211  import { BusinessError } from '@ohos.base';
1212  async function renameFile01() {
1213    // 以内置存储目录为例
1214    // 示例代码sourceDir表示Download目录下文件,该uri是对应的fileInfo中uri
1215    // 开发者应根据自己实际获取的uri进行开发
1216    let sourceDir: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1217    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1218    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1219    try {
1220      if (fileAccessHelper != undefined) {
1221        let DestDir = await fileAccessHelper.rename(sourceDir, "testDir");
1222        console.log("rename sucess, DestDir: " + JSON.stringify(DestDir));
1223      }
1224    } catch (err) {
1225      let error: BusinessError = err as BusinessError;
1226      console.error("rename failed, errCode:" + error.code + ", errMessage:" + error.message);
1227    }
1228  }
1229  ```
1230
1231### rename
1232
1233rename(uri: string, displayName: string, callback: AsyncCallback&lt;string&gt;) : void
1234
1235以异步方法重命名文件(夹),返回重命名后的文件(夹)的Uri。使用callback异步回调。
1236
1237**系统能力**:SystemCapability.FileManagement.UserFileService
1238
1239**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1240
1241**参数:**
1242
1243| 参数名 | 类型 | 必填 | 说明 |
1244| --- | --- | --- | -- |
1245| uri | string | 是 | 源文件(夹)的uri。 |
1246| displayName | string | 是 | 文件(夹)名,支持带后缀。 |
1247| callback | AsyncCallback&lt;string&gt; | 是 | 重命名后的文件(夹)的uri。 |
1248
1249**错误码:**
1250
1251接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1252
1253**示例:**
1254
1255  ```ts
1256  import { BusinessError } from '@ohos.base';
1257  // 以内置存储目录为例
1258  // 示例代码sourceDir表示Download目录下文件,该uri是对应的fileInfo中uri
1259  // 开发者应根据自己实际获取的uri进行开发
1260  let sourceDir: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1261  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1262  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1263  try {
1264    if (fileAccessHelper != undefined) {
1265      fileAccessHelper.rename(sourceDir, "testDir", (err: BusinessError, DestDir: string) => {
1266        if (err) {
1267          console.error("Failed to rename in async, errCode:" + err.code + ", errMessage:" + err.message);
1268        }
1269        console.log("rename sucess, DestDir: " + JSON.stringify(DestDir));
1270      });
1271    }
1272  } catch (err) {
1273    let error: BusinessError = err as BusinessError;
1274    console.error("rename failed, errCode:" + error.code + ", errMessage:" + error.message);
1275  }
1276  ```
1277
1278### access
1279
1280access(sourceFileUri: string) : Promise&lt;boolean&gt;
1281
1282以异步方法判断文件(夹)是否存在。使用Promise异步回调。
1283
1284**系统能力**:SystemCapability.FileManagement.UserFileService
1285
1286**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1287
1288**参数:**
1289
1290| 参数名 | 类型 | 必填 | 说明 |
1291| --- | --- | --- | -- |
1292| sourceFileUri | string | 是 | 文件(夹)的uri。 |
1293
1294**返回值:**
1295
1296| 类型 | 说明 |
1297| --- | -- |
1298| Promise&lt;boolean&gt; | 文件(夹)是否存在。true为存在;false为不存在。|
1299
1300**错误码:**
1301
1302接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1303
1304**示例:**
1305
1306  ```ts
1307  import { BusinessError } from '@ohos.base';
1308  // 以内置存储目录为例
1309  // 示例代码sourceDir表示Download目录下文件,该uri是对应的fileInfo中uri
1310  // 开发者应根据自己实际获取的uri进行开发
1311  async function accessFunc() {
1312    let sourceDir: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1313    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1314    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1315    try {
1316      if (fileAccessHelper != undefined) {
1317        let existJudgment = await fileAccessHelper.access(sourceDir);
1318        if (existJudgment) {
1319          console.log("sourceDir exists");
1320        } else {
1321          console.log("sourceDir does not exist");
1322        }
1323      }
1324    } catch (err) {
1325      let error: BusinessError = err as BusinessError;
1326      console.error("access failed, errCode:" + error.code + ", errMessage:" + error.message);
1327    }
1328  }
1329  ```
1330
1331### access
1332
1333access(sourceFileUri: string, callback: AsyncCallback&lt;boolean&gt;) : void
1334
1335以异步方法判断文件(夹)是否存在。使用callback异步回调。
1336
1337**系统能力**:SystemCapability.FileManagement.UserFileService
1338
1339**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1340
1341**参数:**
1342
1343| 参数名 | 类型 | 必填 | 说明 |
1344| --- | --- | --- | -- |
1345| sourceFileUri | string | 是 | 文件(夹)的uri。 |
1346| callback | AsyncCallback&lt;boolean&gt; | 是 | 文件(夹)是否存在。true为存在;false为不存在。 |
1347
1348**错误码:**
1349
1350接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
1351
1352**示例:**
1353
1354  ```ts
1355  import { BusinessError } from '@ohos.base';
1356  // 以内置存储目录为例
1357  // 示例代码sourceDir表示Download目录下文件夹,该uri是对应的fileInfo中uri
1358  // 开发者应根据自己实际获取的uri进行开发
1359  let sourceDir: string = "file://docs/storage/Users/currentUser/Download/test";
1360  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1361  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1362  try {
1363    if (fileAccessHelper != undefined) {
1364      fileAccessHelper.access(sourceDir, (err: BusinessError, existJudgment: boolean) => {
1365        if (err) {
1366          console.error("Failed to access in async, errCode:" + err.code + ", errMessage:" + err.message);
1367          return;
1368        }
1369        if (existJudgment)
1370          console.log("sourceDir exists");
1371        else
1372          console.log("sourceDir does not exist");
1373      });
1374    }
1375  } catch (err) {
1376    let error: BusinessError = err as BusinessError;
1377    console.error("access failed, errCode:" + error.code + ", errMessage:" + error.message);
1378  }
1379  ```
1380
1381### getFileInfoFromUri<sup>10+</sup>
1382
1383getFileInfoFromUri(uri: string) : Promise\<FileInfo>
1384
1385以异步方法获取uri对应的FileInfo对象。使用promise异步回调。
1386
1387**系统能力**:SystemCapability.FileManagement.UserFileService
1388
1389**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1390
1391**参数:**
1392
1393| 参数名 | 类型 | 必填 | 说明 |
1394| --- | --- | --- | -- |
1395| uri | string | 是 | 文件(夹)的Uri。 |
1396
1397**返回值:**
1398
1399| 类型 | 说明 |
1400| --- | -- |
1401| Promise\<[FileInfo](#fileinfo)> | FileInfo对象。 |
1402
1403**示例:**
1404
1405  ```ts
1406  import { BusinessError } from '@ohos.base';
1407  // 以内置存储目录为例
1408  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
1409  // 开发者应根据自己实际获取的uri进行开发
1410  async function getUri() {
1411    let sourceUri: string = "file://docs/storage/Users/currentUser/Download";
1412    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1413    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1414    try {
1415      if (fileAccessHelper != undefined) {
1416        let fileInfo = await fileAccessHelper.getFileInfoFromUri(sourceUri);
1417      }
1418    } catch (err) {
1419      let error: BusinessError = err as BusinessError;
1420      console.error("getFileInfoFromUri failed, errCode:" + error.code + ", errMessage:" + error.message);
1421    }
1422  }
1423  ```
1424
1425### getFileInfoFromUri<sup>10+</sup>
1426
1427getFileInfoFromUri(uri: string, callback: AsyncCallback\<FileInfo>) : void
1428
1429以异步方法获取uri对应的FileInfo对象。使用callback异步回调。
1430
1431**系统能力**:SystemCapability.FileManagement.UserFileService
1432
1433**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1434
1435**参数:**
1436
1437| 参数名 | 类型 | 必填 | 说明 |
1438| --- | --- | --- | -- |
1439| uri | string | 是 | 文件(夹)的Uri。 |
1440| callback | AsyncCallback&lt;[FileInfo](#fileinfo)&gt; | 是 | uri对应的FileInfo对象。 |
1441
1442**示例:**
1443
1444  ```ts
1445  import { BusinessError } from '@ohos.base';
1446  // 以内置存储目录为例
1447  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
1448  // 开发者应根据自己实际获取的uri进行开发
1449  let sourceUri: string = "file://docs/storage/Users/currentUser/Download";
1450  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1451  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1452  try {
1453    if (fileAccessHelper != undefined) {
1454      fileAccessHelper.getFileInfoFromUri(sourceUri, (err: BusinessError, fileInfo: fileAccess.FileInfo) => {
1455        if (err) {
1456          console.error("Failed to getFileInfoFromUri in async, errCode:" + err.code + ", errMessage:" + err.message);
1457          return;
1458        }
1459        console.log("getFileInfoFromUri success, fileInfo: " + JSON.stringify(fileInfo));
1460      });
1461    }
1462  } catch (err) {
1463    let error: BusinessError = err as BusinessError;
1464    console.error("getFileInfoFromUri failed, errCode:" + error.code + ", errMessage:" + error.message);
1465  }
1466  ```
1467
1468
1469### getFileInfoFromRelativePath<sup>10+</sup>
1470
1471getFileInfoFromRelativePath(relativePath: string) : Promise\<FileInfo>
1472
1473以异步方法获取relativePath对应的FileInfo对象。使用promise异步回调。
1474
1475**系统能力**:SystemCapability.FileManagement.UserFileService
1476
1477**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1478
1479**参数:**
1480
1481| 参数名 | 类型 | 必填 | 说明 |
1482| --- | --- | --- | -- |
1483| relativePath | string | 是 | 文件(夹)的相对路径。 |
1484
1485**返回值:**
1486
1487| 类型 | 说明 |
1488| --- | -- |
1489| Promise\<[FileInfo](#fileinfo)> | FileInfo对象。 |
1490
1491**示例:**
1492
1493  ```ts
1494  import { BusinessError } from '@ohos.base';
1495  // 示例代码relativePath表示Download目录,该relativePath是对应的fileInfo中relativePath
1496  // 开发者应根据自己实际获取的relativePath进行开发
1497  async function getRelativePath() {
1498    let relativePath: string = "Download/";
1499    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1500    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1501    try {
1502      if (fileAccessHelper != undefined) {
1503        let fileInfo = await fileAccessHelper.getFileInfoFromRelativePath(relativePath);
1504      }
1505    } catch (err) {
1506      let error: BusinessError = err as BusinessError;
1507      console.error("getFileInfoFromRelativePath failed, errCode:" + error.code + ", errMessage:" + error.message);
1508    }
1509  }
1510  ```
1511
1512### getFileInfoFromRelativePath<sup>10+</sup>
1513
1514getFileInfoFromRelativePath(relativePath: string, callback: AsyncCallback\<FileInfo>) : void
1515
1516以异步方法获取relativePath对应的FileInfo对象。使用callback异步回调。
1517
1518**系统能力**:SystemCapability.FileManagement.UserFileService
1519
1520**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1521
1522**参数:**
1523
1524| 参数名 | 类型 | 必填 | 说明 |
1525| --- | --- | --- | -- |
1526| relativePath | string | 是 | 文件(夹)的相对路径。 |
1527| callback | AsyncCallback&lt;[FileInfo](#fileinfo)&gt; | 是 | relativePath对应的FileInfo对象。 |
1528
1529**示例:**
1530
1531  ```ts
1532  import { BusinessError } from '@ohos.base';
1533  // 示例代码relativePath表示Download目录,该relativePath是对应的fileInfo中relativePath
1534  // 开发者应根据自己实际获取的relativePath进行开发
1535  let relativePath: string = "Download/";
1536  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1537  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1538  try {
1539    if (fileAccessHelper != undefined) {
1540      fileAccessHelper.getFileInfoFromRelativePath(relativePath, (err: BusinessError, fileInfo: fileAccess.FileInfo) => {
1541        if (err) {
1542          console.error("Failed to getFileInfoFromRelativePath in async, errCode:" + err.code + ", errMessage:" + err.message);
1543          return;
1544        }
1545        console.log("getFileInfoFromRelativePath success, fileInfo: " + JSON.stringify(fileInfo));
1546      });
1547    }
1548  } catch (err) {
1549    let error: BusinessError = err as BusinessError;
1550    console.error("getFileInfoFromRelativePath failed, errCode:" + error.code + ", errMessage:" + error.message);
1551  }
1552  ```
1553
1554### query<sup>10+</sup>
1555
1556query(uri:string, metaJson: string) : Promise&lt;string&gt;
1557
1558通过uri查询文件或目录的相关信息,使用Promise异步回调。
1559
1560**系统能力**:SystemCapability.FileManagement.UserFileService
1561
1562**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1563
1564**参数:**
1565
1566| 参数名   | 类型   | 必填 | 说明                                                 |
1567| -------- | ------ | ---- | ---------------------------------------------------- |
1568| uri      | string | 是   | 所选文件或目录的uri(从[FileInfo](#fileinfo)中获取)。 |
1569| metaJson | string | 是   | json字符串,包含查询属性[FILEKEY](#filekey10) 。       |
1570
1571**返回值:**
1572
1573| 类型                  | 说明                             |
1574| :-------------------- | :------------------------------- |
1575| Promise&lt;string&gt; | 返回json字符串,包括查询属性和值。 |
1576
1577**示例:**
1578
1579```ts
1580import { BusinessError } from '@ohos.base';
1581async function getQuery01() {
1582  let imageFileRelativePath: string = "/storage/Users/currentUser/Download/queryTest/image/01.jpg";
1583  let jsonStrSingleRelativepath: string = JSON.stringify({ [fileAccess.FileKey.RELATIVE_PATH]: "" });
1584  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1585  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1586  try {
1587    if (fileAccessHelper != undefined) {
1588      let fileInfo = await fileAccessHelper.getFileInfoFromRelativePath(imageFileRelativePath);
1589      let queryResult = await fileAccessHelper.query(fileInfo.uri, jsonStrSingleRelativepath);
1590      console.log("query_file_single faf query, queryResult.relative_path: " + JSON.parse(queryResult).relative_path);
1591    }
1592  } catch (err) {
1593    let error: BusinessError = err as BusinessError;
1594    console.error("query_file_single faf query failed, error.code :" + error.code + ", errorMessage :" + error.message);
1595  }
1596}
1597```
1598
1599### query<sup>10+</sup>
1600
1601query(uri:string, metaJson: string, callback: AsyncCallback&lt;string&gt;) : void
1602
1603通过uri查询文件或目录的相关信息,使用callback异步回调。
1604
1605**系统能力**:SystemCapability.FileManagement.UserFileService
1606
1607**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1608
1609**参数:**
1610
1611| 参数名   | 类型                        | 必填 | 说明                                                 |
1612| -------- | --------------------------- | ---- | ---------------------------------------------------- |
1613| uri      | string | 是   | 所选文件或目录的uri(从[FileInfo](#fileinfo)中获取)。 |
1614| metaJson | string | 是   | json字符串,包含查询属性[FILEKEY](#filekey10)。        |
1615| callback | AsyncCallback&lt;string&gt; | 是   | 返回json字符串,包括查询属性和值。                     |
1616
1617**示例:**
1618
1619```ts
1620import { BusinessError } from '@ohos.base';
1621async function getQuery02() {
1622  let imageFileRelativePath: string = "/storage/Users/currentUser/Download/queryTest/image/01.jpg";
1623  let jsonStrSingleRelativepath: string = JSON.stringify({ [fileAccess.FileKey.RELATIVE_PATH]: "" });
1624  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1625  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1626  try {
1627    if (fileAccessHelper != undefined) {
1628      let fileInfo = await fileAccessHelper.getFileInfoFromRelativePath(imageFileRelativePath);
1629      fileAccessHelper.query(fileInfo.uri, jsonStrSingleRelativepath, (err: BusinessError, queryResult: string) => {
1630        if (err) {
1631          console.log("query_file_single faf query Failed, errCode:" + err.code + ", errMessage:" + err.message);
1632          return;
1633        }
1634        console.log("query_file_single faf query, queryResult.relative_path: " + JSON.parse(queryResult).relative_path);
1635      })
1636    }
1637  } catch (err) {
1638    let error: BusinessError = err as BusinessError;
1639    console.error("query_file_single faf query failed, error.code :" + error.code + ", errorMessage :" + error.message);
1640  }
1641}
1642```
1643
1644### copy<sup>10+</sup>
1645
1646copy(sourceUri: string, destUri: string, force?: boolean) : Promise&lt;Array&lt;CopyResult&gt;&gt;
1647
1648复制文件或目录,使用 Promise 异步回调。
1649
1650**系统能力**:SystemCapability.FileManagement.UserFileService
1651
1652**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1653
1654**参数:**
1655
1656| 参数名    | 类型    | 必填 | 说明                                                         |
1657| --------- | ------- | ---- | ------------------------------------------------------------ |
1658| sourceUri | string  | 是   | 待拷贝的源文件(夹)的 uri。例如:file://docs/storage/Users/currentUser/Download/1.txt。  |
1659| destUri   | string  | 是   | 目标文件夹的 uri。例如:file://docs/storage/Users/currentUser/Download/test。        |
1660| force     | boolean | 否   | 含有同名文件时是否强制覆盖文件。force 为 true 时强制覆盖文件;force 为空或 false 时不强制覆盖文件。该参数不填,默认为false。 |
1661
1662**返回值:**
1663
1664| 类型                                                    | 说明                                                         |
1665| :------------------------------------------------------ | :----------------------------------------------------------- |
1666| Promise&lt;Array&lt;[CopyResult](#copyresult10)&gt;&gt; | 返回 copyresult 数组。copyResult 为复制操作失败的返回信息;复制成功无返回信息。 |
1667
1668**示例 1:force 为空**
1669
1670```ts
1671import { BusinessError } from '@ohos.base';
1672// 以内置存储目录为例
1673// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
1674// 开发者应根据自己实际获取的uri进行开发
1675async function copyFunc01() {
1676  let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1677  let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1678  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1679  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1680  try {
1681    if (fileAccessHelper != undefined) {
1682      let copyResult = await fileAccessHelper.copy(sourceFile, destFile);
1683      if (copyResult.length === 0) {
1684        console.log("copy success");
1685      } else {
1686        for (let i = 0; i < copyResult.length; i++) {
1687          console.error("errCode" + copyResult[i].errCode);
1688          console.error("errMsg" + copyResult[i].errMsg);
1689          console.error("sourceUri" + copyResult[i].sourceUri);
1690          console.error("destUri" + copyResult[i].destUri);
1691        }
1692      }
1693    }
1694  } catch (err) {
1695    let error: BusinessError = err as BusinessError;
1696    console.error("copy failed, errCode:" + error.code + ", errMessage:" + error.message);
1697  }
1698}
1699```
1700
1701**示例 2:force 为 true**
1702
1703```ts
1704import { BusinessError } from '@ohos.base';
1705// 以内置存储目录为例
1706// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
1707// 开发者应根据自己实际获取的uri进行开发
1708async function copyFunc02() {
1709  let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1710  let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1711  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1712  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1713  try {
1714    if (fileAccessHelper != undefined) {
1715      let copyResult = await fileAccessHelper.copy(sourceFile, destFile, true);
1716      if (copyResult.length === 0) {
1717        console.log("copy success");
1718      } else {
1719        for (let i = 0; i < copyResult.length; i++) {
1720          console.error("errCode" + copyResult[i].errCode);
1721          console.error("errMsg" + copyResult[i].errMsg);
1722          console.error("sourceUri" + copyResult[i].sourceUri);
1723          console.error("destUri" + copyResult[i].destUri);
1724        }
1725      }
1726    }
1727  } catch (err) {
1728    let error: BusinessError = err as BusinessError;
1729    console.error("copy failed, errCode:" + error.code + ", errMessage:" + error.message);
1730  }
1731}
1732```
1733
1734### copy<sup>10+</sup>
1735
1736copy(sourceUri: string, destUri: string, callback: AsyncCallback&lt;Array&lt;CopyResult&gt;&gt;) : void
1737
1738复制文件或目录,使用 callback 异步回调。
1739
1740**系统能力**:SystemCapability.FileManagement.UserFileService
1741
1742**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1743
1744**参数:**
1745
1746| 参数名    | 类型                                             | 必填 | 说明                                                         |
1747| --------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ |
1748| sourceUri | string                                           | 是   | 待拷贝的源文件(夹)的 uri。例如:file://docs/storage/Users/currentUser/Download/1.txt。  |
1749| destUri   | string                                           | 是   | 目标文件夹的 uri。例如:file://docs/storage/Users/currentUser/Download/test。         |
1750| callback  | AsyncCallback&lt;Array&lt;[CopyResult](#copyresult10)&gt;&gt; | 是   | 返回 copyresult 数组。copyResult 为复制操作失败的返回信息;复制成功无返回信息。 |
1751
1752**示例:**
1753
1754```ts
1755import { BusinessError } from '@ohos.base';
1756// 以内置存储目录为例
1757// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
1758// 开发者应根据自己实际获取的uri进行开发
1759let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1760let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1761// fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1762let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1763try {
1764  if (fileAccessHelper != undefined) {
1765    fileAccessHelper.copy(sourceFile, destFile, async (err: BusinessError, copyResult: Array<fileAccess.CopyResult>) => {
1766      if (err) {
1767        console.error("copy failed, errCode:" + err.code + ", errMessage:" + err.message);
1768      }
1769      if (copyResult.length === 0) {
1770        console.log("copy success");
1771      } else {
1772        for (let i = 0; i < copyResult.length; i++) {
1773          console.error("errCode" + copyResult[i].errCode);
1774          console.error("errMsg" + copyResult[i].errMsg);
1775          console.error("sourceUri" + copyResult[i].sourceUri);
1776          console.error("destUri" + copyResult[i].destUri);
1777        }
1778      }
1779    });
1780  }
1781} catch (err) {
1782  let error: BusinessError = err as BusinessError;
1783  console.error("copy failed, errCode:" + error.code + ", errMessage:" + error.message);
1784}
1785```
1786
1787### copy<sup>10+</sup>
1788
1789copy(sourceUri: string, destUri: string, force: boolean, callback: AsyncCallback&lt;Array&lt;CopyResult&gt;&gt;) : void
1790
1791复制文件或目录,使用 callback 异步回调。
1792
1793**系统能力**:SystemCapability.FileManagement.UserFileService
1794
1795**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1796
1797**参数:**
1798
1799| 参数名    | 类型                                             | 必填 | 说明                                                         |
1800| --------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ |
1801| sourceUri | string                                           | 是   | 待拷贝的源文件(夹)的 uri。例如:file://docs/storage/Users/currentUser/Download/1.txt。  |
1802| destUri   | string                                           | 是   | 目标文件夹的 uri。例如:file://docs/storage/Users/currentUser/Download/test。         |
1803| force     | boolean                                          | 是   | 含有同名文件时是否强制覆盖文件。force 为 true 时强制覆盖文件;force 为空或 false 时不强制覆盖文件。 |
1804| callback  | AsyncCallback&lt;Array&lt;[CopyResult](#copyresult10)&gt;&gt; | 是   | 返回 copyresult 数组。copyResult 为复制操作失败的返回信息;复制成功无返回信息。 |
1805
1806**示例:**
1807
1808```ts
1809import { BusinessError } from '@ohos.base';
1810// 以内置存储目录为例
1811// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
1812// 开发者应根据自己实际获取的uri进行开发
1813let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1814let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1815// fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1816let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1817try {
1818  if (fileAccessHelper != undefined) {
1819    fileAccessHelper.copy(sourceFile, destFile, true, async (err: BusinessError, copyResult: Array<fileAccess.CopyResult>) => {
1820      if (err) {
1821        console.error("copy failed, errCode:" + err.code + ", errMessage:" + err.message);
1822      }
1823      if (copyResult.length === 0) {
1824        console.log("copy success");
1825      } else {
1826        for (let i = 0; i < copyResult.length; i++) {
1827          console.error("errCode" + copyResult[i].errCode);
1828          console.error("errMsg" + copyResult[i].errMsg);
1829          console.error("sourceUri" + copyResult[i].sourceUri);
1830          console.error("destUri" + copyResult[i].destUri);
1831        }
1832      }
1833    });
1834  }
1835} catch (err) {
1836  let error: BusinessError = err as BusinessError;
1837  console.error("copy failed, errCode:" + error.code + ", errMessage:" + error.message);
1838}
1839```
1840
1841### copyFile<sup>11+</sup>
1842
1843copyFile(sourceUri: string, destUri: string, fileName: string): Promise&lt;string&gt;
1844
1845复制文件并传入备用文件名,使用Promise异步回调。
1846
1847**模型约束**:此接口仅可在Stage模型下使用。
1848
1849**系统能力**:SystemCapability.FileManagement.UserFileService
1850
1851**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1852
1853**参数:**
1854
1855| 参数名    | 类型    | 必填 | 说明                                                         |
1856| --------- | ------- | ---- | ------------------------------------------------------------ |
1857| sourceUri | string  | 是   | 待拷贝的源文件(夹)的 uri。例如:file://docs/storage/Users/currentUser/Download/1.txt。  |
1858| destUri   | string  | 是   | 目标文件夹的 uri。例如:file://docs/storage/Users/currentUser/Download/test。        |
1859| fileName  | string  | 是   | 如果目标目录中有1.txt文件,就是用fileName 作为文件名进行复制。 |
1860
1861**返回值:**
1862
1863| 类型                                                    | 说明                                                         |
1864| :------------------------------------------------------ | :----------------------------------------------------------- |
1865| Promise&lt;string&gt; | 返回一个复制成功的文件的uri。 |
1866
1867**示例 1**
1868
1869```ts
1870import { BusinessError } from '@ohos.base';
1871// 以内置存储目录为例
1872// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
1873// 开发者应根据自己实际获取的uri进行开发
1874async function copyFunc01() {
1875  let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1876  let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1877  let fileName: string = "2.txt";
1878  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1879  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1880  try {
1881    if (fileAccessHelper != undefined) {
1882      let copyResult = await fileAccessHelper.copyFile(sourceFile, destFile, fileName);
1883      console.log("copyResult uri: " + copyResult);
1884    }
1885  } catch (err) {
1886    let error: BusinessError = err as BusinessError;
1887    console.error("copy failed, errCode:" + error.code + ", errMessage:" + error.message);
1888  }
1889}
1890```
1891
1892### copyFile<sup>11+</sup>
1893
1894copyFile(sourceUri: string, destUri: string, fileName: string, callback: AsyncCallback&lt;string&gt;) : void
1895
1896复制文件并传入备用文件名,使用callback异步回调。
1897
1898**模型约束**:此接口仅可在Stage模型下使用。
1899
1900**系统能力**:SystemCapability.FileManagement.UserFileService
1901
1902**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1903
1904**参数:**
1905
1906| 参数名    | 类型                                             | 必填 | 说明                                                         |
1907| --------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ |
1908| sourceUri | string                                           | 是   | 待拷贝的源文件(夹)的 uri。例如:file://docs/storage/Users/currentUser/Download/1.txt。  |
1909| destUri   | string                                           | 是   | 目标文件夹的 uri。例如:file://docs/storage/Users/currentUser/Download/test。         |
1910| fileName  | string                                           | 是   | 如果目标目录中有1.txt文件。就是用fileName 作为文件名进行复制。 |
1911| callback  | AsyncCallback&lt;string&gt; | 是   | 返回一个复制成功的文件的uri。 |
1912
1913**示例:**
1914
1915```ts
1916import { BusinessError } from '@ohos.base';
1917// 以内置存储目录为例
1918// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
1919// 开发者应根据自己实际获取的uri进行开发
1920let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
1921let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
1922let fileName: string = "2.txt";
1923// fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1924let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1925try {
1926  if (fileAccessHelper != undefined) {
1927    fileAccessHelper.copyFile(sourceFile, destFile, fileName, async (copyResult: string) => {
1928          console.log("copyResult uri: " + copyResult);
1929    });
1930  }
1931} catch (err) {
1932  let error: BusinessError = err as BusinessError;
1933  console.error("copy failed, errCode:" + error.code + ", errMessage:" + error.message);
1934}
1935```
1936
1937### registerObserver<sup>10+</sup>
1938
1939registerObserver(uri: string, notifyForDescendants: boolean, callback: Callback&lt;NotifyMessage&gt;): void
1940
1941注册指定uri的callback。uri与callback可以为多对多的关系,推荐使用一个callback监听一个uri。
1942
1943**系统能力**:SystemCapability.FileManagement.UserFileService
1944
1945**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1946
1947**参数:**
1948
1949| 参数名               | 类型                                              | 必填 | 说明                           |
1950| -------------------- | ------------------------------------------------- | ---- | ------------------------------ |
1951| uri                  | string                                            | 是   | 文件或目录的uri。                |
1952| notifyForDescendants | boolean                                           | 是   | 监听目录时,是否监听子文件变化。true为监听;false为不监听。 |
1953| callback             | Callback&lt;[NotifyMessage](#notifymessage10)&gt; | 是   | 返回通知信息。                   |
1954
1955**示例1:注册一个callback对一个uri的监听**
1956
1957```ts
1958import { BusinessError } from '@ohos.base';
1959async function registerObserver01() {
1960  let DirUri: string = 'file://docs/storage/Users/currentUser/Documents';
1961  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1962  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
1963  try {
1964    if (fileAccessHelper != undefined) {
1965      let dirUri1 = await fileAccessHelper.mkDir(DirUri, 'NOTIFY_DIR1');
1966      let dirUri2 = await fileAccessHelper.mkDir(DirUri, 'NOTIFY_DIR2');
1967      // 因注册时notifyForDescendants参数为true所以期待收到两次通知
1968      // uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR1/SUB_FILE',事件类型为NOTIFY_MOVED_FROM
1969      // uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR1/SUB_FILE',事件类型为NOTIFY_MOVE_SELF
1970      const callbackDir1 = (NotifyMessageDir: fileAccess.NotifyMessage) => {
1971        if (NotifyMessageDir != undefined) {
1972          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
1973        } else {
1974          console.error("NotifyMessageDir is undefined");
1975        }
1976      }
1977      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR2/SUB_FILE',事件类型为NOTIFY_MOVED_TO
1978      const callbackDir2 = (NotifyMessageDir: fileAccess.NotifyMessage) => {
1979        if (NotifyMessageDir != undefined) {
1980          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
1981        } else {
1982          console.error("NotifyMessageDir is undefined");
1983        }
1984      }
1985      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR1/SUB_FILE',事件类型为NOTIFY_MOVE_SELF
1986      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR1/SUB_FILE',事件类型为NOTIFY_MOVED_FROM
1987      const callbackFile = (NotifyMessageDir: fileAccess.NotifyMessage) => {
1988        if (NotifyMessageDir != undefined) {
1989          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
1990        } else {
1991          console.error("NotifyMessageDir is undefined");
1992        }
1993      }
1994      let fileUri = await fileAccessHelper.createFile(dirUri1, 'SUB_FILE');
1995      fileAccessHelper.registerObserver(dirUri1, true, callbackDir1);
1996      fileAccessHelper.registerObserver(dirUri2, true, callbackDir2);
1997      // 如果不监听被移动文件本身,将不会触发NOTIFY_MOVE_SELF事件
1998      fileAccessHelper.registerObserver(fileUri, true, callbackFile);
1999      let moveFileUri = await fileAccessHelper.move(fileUri, dirUri2);
2000      // 注册完不应立即解注册,可能存在解注册先于通知返回的情景,这将收不到通知事件
2001      fileAccessHelper.unregisterObserver(dirUri1, callbackDir1);
2002      fileAccessHelper.unregisterObserver(dirUri2, callbackDir2);
2003      fileAccessHelper.unregisterObserver(fileUri, callbackFile);
2004    }
2005  } catch (err) {
2006    let error: BusinessError = err as BusinessError;
2007    console.error("registerObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2008  }
2009}
2010```
2011
2012**示例2:使用相同uri、notifyForDescendants、callback重复注册**
2013
2014```ts
2015import { BusinessError } from '@ohos.base';
2016async function registerObserver02() {
2017  let DirUri: string = 'file://docs/storage/Users/currentUser/Documents';
2018  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2019  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2020  try {
2021    if (fileAccessHelper != undefined) {
2022      let dirUri = await fileAccessHelper.mkDir(DirUri, 'NOTIFY_DIR');
2023      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR/SUB_DIR',事件类型为NOTIFY_ADD
2024      const callbackDir = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2025        if (NotifyMessageDir != undefined) {
2026          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2027        } else {
2028          console.error("NotifyMessageDir is undefined");
2029        }
2030      }
2031      fileAccessHelper.registerObserver(dirUri, true, callbackDir);
2032      // 返回注册成功,仅在log中提示重复注册
2033      fileAccessHelper.registerObserver(dirUri, true, callbackDir);
2034      let subDirUri = await fileAccessHelper.mkDir(dirUri, 'SUB_DIR');
2035      // 注册完不应立即解注册,可能存在解注册先于通知返回的情景,这将收不到通知事件
2036      fileAccessHelper.unregisterObserver(dirUri, callbackDir);
2037    }
2038  } catch (err) {
2039    let error: BusinessError = err as BusinessError;
2040    console.error("registerObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2041  }
2042}
2043```
2044
2045**示例3:使用相同uri、callback及不同notifyForDescendants重复注册会重置notifyForDescendants**
2046
2047```ts
2048import { BusinessError } from '@ohos.base';
2049async function registerObserver03() {
2050  let DirUri: string = 'file://docs/storage/Users/currentUser/Documents';
2051  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2052  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2053  try {
2054    if (fileAccessHelper != undefined) {
2055      let dirUri = await fileAccessHelper.mkDir(DirUri, 'NOTIFY_DIR');
2056      // 期待第一次收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR/SUB_FILE_1',事件类型为NOTIFY_ADD
2057      // 期待无第二次返回
2058      const callbackDir = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2059        if (NotifyMessageDir != undefined) {
2060          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2061        } else {
2062          console.error("NotifyMessageDir is undefined");
2063        }
2064      }
2065      fileAccessHelper.registerObserver(dirUri, true, callbackDir);
2066      let subFile1 = await fileAccessHelper.createFile(dirUri, 'SUB_FILE_1');
2067      // 注册成功修改notifyForDescendants为false,不感知子文件的变化
2068      fileAccessHelper.registerObserver(dirUri, false, callbackDir);
2069      let subFile2 = await fileAccessHelper.createFile(dirUri, 'SUB_FILE_2');
2070      // 注册完不应立即解注册,可能存在解注册先于通知返回的情景,这将收不到通知事件
2071      fileAccessHelper.unregisterObserver(dirUri, callbackDir);
2072    }
2073  } catch (err) {
2074    let error: BusinessError = err as BusinessError;
2075    console.error("registerObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2076  }
2077}
2078```
2079
2080**示例4:注册监听设备上下线**
2081
2082```ts
2083import { BusinessError } from '@ohos.base';
2084async function UnregisterObserver03() {
2085  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2086  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2087  try {
2088    const callbackDir1 = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2089      if (NotifyMessageDir != undefined) {
2090        console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2091      } else {
2092        console.error("NotifyMessageDir is undefined");
2093      }
2094    }
2095    if (fileAccessHelper != undefined) {
2096      // 监听设备的上下线
2097      fileAccessHelper.registerObserver(fileAccess.DEVICES_URI, true, callbackDir1);
2098      // 取消监听设备的上下线
2099      fileAccessHelper.unregisterObserver(fileAccess.DEVICES_URI);
2100    }
2101  } catch (err) {
2102    let error: BusinessError = err as BusinessError;
2103    console.error("unregisterObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2104  }
2105}
2106```
2107
2108### unregisterObserver<sup>10+</sup>
2109
2110 unregisterObserver(uri: string, callback?: Callback&lt;NotifyMessage&gt;): void
2111
2112取消注册指定的uri和callback。
2113
2114**系统能力**:SystemCapability.FileManagement.UserFileService
2115
2116**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2117
2118**参数:**
2119
2120| 参数名   | 类型                                              | 必填 | 说明                      |
2121| -------- | ------------------------------------------------- | ---- | ------------------------- |
2122| uri      | string                                            | 是   | 文件或目录的uri。           |
2123| callback | Callback&lt;[NotifyMessage](#notifymessage10)&gt; | 否   | 解注册uri下对应的callback。如果该参数不填,则解注册对应的所有callbackback。 |
2124
2125**示例1: 解注册监听uri的一个callback**
2126
2127```ts
2128import { BusinessError } from '@ohos.base';
2129async function UnregisterObserver01() {
2130  let DirUri: string = 'file://docs/storage/Users/currentUser/Documents';
2131  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2132  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2133  try {
2134    if (fileAccessHelper != undefined) {
2135      let dirUri = await fileAccessHelper.mkDir(DirUri, 'NOTIFY_DIR');
2136      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR',事件类型为NOTIFY_DELETE
2137      const callbackDir = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2138        if (NotifyMessageDir != undefined) {
2139          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2140        } else {
2141          console.error("NotifyMessageDir is undefined");
2142        }
2143      }
2144      fileAccessHelper.registerObserver(dirUri, true, callbackDir);
2145      await fileAccessHelper.delete(dirUri);
2146      // 注册完不应立即解注册,可能存在解注册先于通知返回的情景,这将收不到通知事件
2147      fileAccessHelper.unregisterObserver(dirUri, callbackDir);
2148    }
2149  } catch (err) {
2150    let error: BusinessError = err as BusinessError;
2151    console.error("unregisterObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2152  }
2153}
2154```
2155
2156**示例2:对监听uri的某一callback重复解注册**
2157
2158```ts
2159import { BusinessError } from '@ohos.base';
2160async function UnregisterObserver02() {
2161  let DirUri: string = 'file://docs/storage/Users/currentUser/Documents';
2162  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2163  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2164  try {
2165      if (fileAccessHelper != undefined) {
2166      let dirUri = await fileAccessHelper.mkDir(DirUri, 'NOTIFY_DIR');
2167      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR',事件类型为NOTIFY_DELETE
2168      const callbackDir = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2169        if (NotifyMessageDir != undefined) {
2170          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2171        } else {
2172          console.error("NotifyMessageDir is undefined");
2173        }
2174      }
2175      fileAccessHelper.registerObserver(dirUri, true, callbackDir);
2176      await fileAccessHelper.delete(dirUri);
2177      // 注册完不应立即解注册,可能存在解注册先于通知返回的情景,这将收不到通知事件
2178      fileAccessHelper.unregisterObserver(dirUri, callbackDir);
2179      // 解注册失败,抛出错误码 E_CAN_NOT_FIND_URI
2180      fileAccessHelper.unregisterObserver(dirUri, callbackDir);
2181      }
2182  } catch (err) {
2183    let error: BusinessError = err as BusinessError;
2184    console.error("unregisterObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2185  }
2186}
2187```
2188
2189**示例3:解注册监听uri的所有callback**
2190
2191```ts
2192import { BusinessError } from '@ohos.base';
2193async function UnregisterObserver03() {
2194  let DirUri: string = 'file://docs/storage/Users/currentUser/Documents';
2195  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2196  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2197  try {
2198    if (fileAccessHelper != undefined) {
2199      let dirUri = await fileAccessHelper.mkDir(DirUri, 'NOTIFY_DIR');
2200      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR/SUB_FILE',事件类型为NOTIFY_MOVED_FROM
2201      // 期待收到uri为'file://docs/storage/Users/currentUser/Documents/NOTIFY_DIR/RENAME_FILE',事件类型为NOTIFY_MOVED_TO
2202      const callbackDir1 = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2203        if (NotifyMessageDir != undefined) {
2204          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2205        } else {
2206          console.error("NotifyMessageDir is undefined");
2207        }
2208      }
2209      // 期待收不到任何事件
2210      const callbackDir2 = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2211        if (NotifyMessageDir != undefined) {
2212          console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2213        } else {
2214          console.error("NotifyMessageDir is undefined");
2215        }
2216      }
2217      let fileUri = await fileAccessHelper.createFile(dirUri, 'SUB_FILE');
2218      fileAccessHelper.registerObserver(dirUri, true, callbackDir1);
2219      // 此处注册为不关注下一级,将收不到关于下一级的事件
2220      fileAccessHelper.registerObserver(dirUri, false, callbackDir2);
2221      let renameUri = await fileAccessHelper.rename(fileUri, 'RENAME_FILE');
2222      // 取消注册监听dirUri的所有callback(callbackDir1、callbackDir2)
2223      // 注册完不应立即解注册,可能存在解注册先于通知返回的情景,这将收不到通知事件
2224      fileAccessHelper.unregisterObserver(dirUri);
2225      await fileAccessHelper.delete(dirUri);
2226    }
2227  } catch (err) {
2228    let error: BusinessError = err as BusinessError;
2229    console.error("unregisterObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2230  }
2231}
2232```
2233
2234**示例4:解注册监听设备的上下线**
2235
2236```ts
2237import { BusinessError } from '@ohos.base';
2238async function UnregisterObserver03() {
2239  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2240  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2241  try {
2242    const callbackDir1 = (NotifyMessageDir: fileAccess.NotifyMessage) => {
2243      if (NotifyMessageDir != undefined) {
2244        console.log('NotifyType: ' + NotifyMessageDir.type + 'NotifyUri:' + NotifyMessageDir.uris[0]);
2245      } else {
2246        console.error("NotifyMessageDir is undefined");
2247      }
2248    }
2249    if (fileAccessHelper != undefined) {
2250      // 监听设备的上下线
2251      fileAccessHelper.registerObserver(fileAccess.DEVICES_URI, true, callbackDir1);
2252      // 取消监听设备的上下线
2253      fileAccessHelper.unregisterObserver(fileAccess.DEVICES_URI);
2254    }
2255  } catch (err) {
2256    let error: BusinessError = err as BusinessError;
2257    console.error("unregisterObserver failed, errCode:" + error.code + ", errMessage:" + error.message);
2258  }
2259}
2260```
2261
2262### moveItem<sup>11+</sup>
2263
2264moveItem(sourceUri: string, destUri: string, force?: boolean) : Promise&lt;Array&lt;MoveResult&gt;&gt;
2265
2266以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用Promise异步回调。
2267
2268当存在同名文件时,可以选择强制覆盖文件。
2269
2270目前仅支持设备内移动,跨设备不支持移动。
2271
2272**模型约束**:此接口仅可在Stage模型下使用。
2273
2274**系统能力**:SystemCapability.FileManagement.UserFileService
2275
2276**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2277
2278**参数:**
2279
2280| 参数名    | 类型    | 必填 | 说明                                                         |
2281| --------- | ------- | ---- | ------------------------------------------------------------ |
2282| sourceUri | string  | 是   | 待移动的源文件(夹)的uri。                                    |
2283| destUri   | string  | 是   | 目标文件夹的uri。                                            |
2284| force     | boolean | 否   | 选择当存在同名文件时,是否强制覆盖文件。当force为true时,强制覆盖文件;为false时不强制覆盖文件。该参数不填,默认为false。 |
2285
2286**返回值:**
2287
2288| 类型                                                    | 说明                                                         |
2289| ------------------------------------------------------- | ------------------------------------------------------------ |
2290| Promise&lt;Array&lt;[MoveResult](#moveresult11)&gt;&gt; | 返回 moveresult 数组。moveResult 为移动操作失败的返回信息;复制成功无返回信息。 |
2291
2292**错误码:**
2293
2294接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
2295
2296**示例 1:force 为空**
2297
2298```ts
2299import { BusinessError } from '@ohos.base';
2300// 以内置存储目录为例
2301// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
2302// 开发者应根据自己实际获取的uri进行开发
2303async function moveItemFunc01() {
2304  let sourceUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
2305  let destUri: string = "file://docs/storage/Users/currentUser/Download/test";
2306  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2307  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2308  try {
2309    if (fileAccessHelper != undefined) {
2310      let moveResult = await fileAccessHelper.moveItem(sourceUri, destUri);
2311      if (moveResult.length === 0) {
2312        console.log("moveItem success");
2313      } else {
2314        for (let i = 0; i < moveResult.length; i++) {
2315          console.error("errCode" + moveResult[i].errCode);
2316          console.error("errMsg" + moveResult[i].errMsg);
2317          console.error("sourceUri" + moveResult[i].sourceUri);
2318          console.error("destUri" + moveResult[i].destUri);
2319        }
2320      }
2321    }
2322  } catch (err) {
2323    let error: BusinessError = err as BusinessError;
2324    console.error("moveItem failed, errCode:" + error.code + ", errMessage:" + error.message);
2325  }
2326}
2327```
2328
2329**示例 2:force 为 true**
2330
2331```ts
2332import { BusinessError } from '@ohos.base';
2333// 以内置存储目录为例
2334// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
2335// 开发者应根据自己实际获取的uri进行开发
2336async function moveItemFunc02() {
2337  let sourceUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
2338  let destUri: string = "file://docs/storage/Users/currentUser/Download/test";
2339  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2340  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2341  try {
2342    if (fileAccessHelper != undefined) {
2343      let moveResult = await fileAccessHelper.moveItem(sourceUri, destUri, true);
2344      if (moveResult.length === 0) {
2345        console.log("moveItem success");
2346      } else {
2347        for (let i = 0; i < moveResult.length; i++) {
2348          console.error("errCode" + moveResult[i].errCode);
2349          console.error("errMsg" + moveResult[i].errMsg);
2350          console.error("sourceUri" + moveResult[i].sourceUri);
2351          console.error("destUri" + moveResult[i].destUri);
2352        }
2353      }
2354    }
2355  } catch (err) {
2356    let error: BusinessError = err as BusinessError;
2357    console.error("moveItem failed, errCode:" + error.code + ", errMessage:" + error.message);
2358  }
2359}
2360```
2361
2362### moveItem<sup>11+</sup>
2363
2364moveItem(sourceUri: string, destUri: string, callback: AsyncCallback&lt;Array&lt;MoveResult&gt;&gt;) : void
2365
2366以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用callback异步回调。
2367
2368当前仅支持设备内移动,不支持跨设备移动。
2369
2370**模型约束**:此接口仅可在Stage模型下使用。
2371
2372**系统能力**:SystemCapability.FileManagement.UserFileService
2373
2374**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2375
2376**参数:**
2377
2378| 参数名    | 类型                                                         | 必填 | 说明                                                         |
2379| --------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
2380| sourceUri | string                                                       | 是   | 待移动的源文件(夹)的uri。                                    |
2381| destUri   | string                                                       | 是   | 目标文件夹的uri。                                            |
2382| callback  | AsyncCallback&lt;Array&lt;[MoveResult](#moveresult11)&gt;&gt; | 是   | 回调返回MoveResult数组。MoveResult为移动操作失败的返回信息;移动成功无返回信息。 |
2383
2384**示例:**
2385
2386```ts
2387import { BusinessError } from '@ohos.base';
2388// 以内置存储目录为例
2389// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
2390// 开发者应根据自己实际获取的uri进行开发
2391let sourceUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
2392let destUri: string = "file://docs/storage/Users/currentUser/Download/test";
2393// fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2394let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2395try {
2396  if (fileAccessHelper != undefined) {
2397    fileAccessHelper.moveItem(sourceUri, destUri, async (err: BusinessError, copyResult: Array<fileAccess.MoveResult>) => {
2398      if (err) {
2399        console.error("moveItem failed, errCode:" + err.code + ", errMessage:" + err.message);
2400      }
2401      if (moveResult.length === 0) {
2402        console.log("moveItem success");
2403      } else {
2404        for (let i = 0; i < moveResult.length; i++) {
2405          console.error("errCode" + moveResult[i].errCode);
2406          console.error("errMsg" + moveResult[i].errMsg);
2407          console.error("sourceUri" + moveResult[i].sourceUri);
2408          console.error("destUri" + moveResult[i].destUri);
2409        }
2410      }
2411    });
2412  }
2413} catch (err) {
2414  let error: BusinessError = err as BusinessError;
2415  console.error("moveItem failed, errCode:" + error.code + ", errMessage:" + error.message);
2416}
2417```
2418
2419### moveItem<sup>11+</sup>
2420
2421moveItem(sourceUri: string, destUri: string, force: boolean, callback: AsyncCallback&lt;Array&lt;MoveResult&gt;&gt;) : void
2422
2423以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用callback异步回调。
2424
2425当存在同名文件时,可以选择强制覆盖文件。
2426
2427当前仅支持设备内移动,不支持跨设备移动。
2428
2429**模型约束**:此接口仅可在Stage模型下使用。
2430
2431**系统能力**:SystemCapability.FileManagement.UserFileService
2432
2433**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2434
2435**参数:**
2436
2437| 参数名    | 类型                                                         | 必填 | 说明                                                         |
2438| --------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
2439| sourceUri | string                                                       | 是   | 待移动的源文件(夹)的uri。                                    |
2440| destUri   | string                                                       | 是   | 目标文件夹的uri。                                            |
2441| force     | boolean                                                      | 是   | 选择当存在同名文件时,是否强制覆盖文件。当force为true时,强制覆盖文件;为false时不强制覆盖文件。该参数不填,默认为false。 |
2442| callback  | AsyncCallback&lt;Array&lt;[MoveResult](#moveresult11)&gt;&gt; | 是   | 回调返回MoveResult数组。MoveResult为移动操作失败的返回信息;移动成功无返回信息。 |
2443
2444**示例:**
2445
2446```ts
2447import { BusinessError } from '@ohos.base';
2448// 以内置存储目录为例
2449// 示例代码中的sourceFile表示Download目录下的源文件(夹),destFile表示Download目录下的目标文件夹,该uri对应fileInfo中的uri
2450// 开发者应根据自己实际获取的uri进行开发
2451let sourceUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
2452let destUri: string = "file://docs/storage/Users/currentUser/Download/test";
2453// fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2454let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2455try {
2456  if (fileAccessHelper != undefined) {
2457    fileAccessHelper.moveItem(sourceUri, destUri, true, async (err: BusinessError, moveResult: Array<fileAccess.MoveResult>) => {
2458      if (err) {
2459        console.error("moveItem failed, errCode:" + err.code + ", errMessage:" + err.message);
2460      }
2461      if (moveResult.length === 0) {
2462        console.log("copy success");
2463      } else {
2464        for (let i = 0; i < moveResult.length; i++) {
2465          console.error("errCode" + moveResult[i].errCode);
2466          console.error("errMsg" + moveResult[i].errMsg);
2467          console.error("sourceUri" + moveResult[i].sourceUri);
2468          console.error("destUri" + moveResult[i].destUri);
2469        }
2470      }
2471    });
2472  }
2473} catch (err) {
2474  let error: BusinessError = err as BusinessError;
2475  console.error("moveItem failed, errCode:" + error.code + ", errMessage:" + error.message);
2476}
2477```
2478
2479### moveFile<sup>11+</sup>
2480
2481moveFile(sourceUri: string, destUri: string, fileName: string) : Promise&lt;string&gt;
2482
2483以异步方法移动文件,返回移动后文件的uri。使用Promise异步回调。
2484
2485当存在同名文件时(即发生文件移动冲突时),可以重命名待移动的文件,再保存到目标文件夹。
2486
2487目前仅支持设备内移动,跨设备不支持移动。
2488
2489**模型约束**:此接口仅可在Stage模型下使用。
2490
2491**系统能力**:SystemCapability.FileManagement.UserFileService
2492
2493**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2494
2495**参数:**
2496
2497| 参数名     | 类型   | 必填 | 说明                |
2498| ---------- | ------ | ---- | ------------------- |
2499| sourceFile | string | 是   | 待移动源文件的uri。 |
2500| destFile   | string | 是   | 目标文件夹的uri。   |
2501| fileName   | string | 是   | 冲突文件的新名称。  |
2502
2503**返回值:**
2504
2505| 类型                  | 说明                |
2506| --------------------- | ------------------- |
2507| Promise&lt;string&gt; | 新路径下的文件uri。 |
2508
2509**错误码:**
2510
2511接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
2512
2513**示例:**
2514
2515  ```ts
2516  import { BusinessError } from '@ohos.base';
2517  async function moveFile01() {
2518    // 以内置存储目录为例
2519    // 示例代码sourceUri destUri表示Download目录下文件和文件夹,该uri是对应的fileInfo中uri
2520    // 开发者应根据自己实际获取的uri进行开发
2521    let sourceUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
2522    let destUri: string = "file://docs/storage/Users/currentUser/Download/test";
2523    let fileName: string;
2524    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2525    let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2526    try {
2527    if (fileAccessHelper != undefined) {
2528        let fileUri = await fileAccessHelper.moveFile(sourceUri, destUri, fileName);
2529        console.log("moveFile sucess, fileUri: " + JSON.stringify(fileUri));
2530    }
2531    } catch (err) {
2532      let error: BusinessError = err as BusinessError;
2533      console.error("moveFile failed, errCode:" + error.code + ", errMessage:" + error.message);
2534    }
2535  }
2536  ```
2537
2538### moveFile<sup>11+</sup>
2539
2540moveFile(sourceUri: string, destUri: string,  fileName: string, callback: AsyncCallback&lt;string&gt;) : void
2541
2542以异步方法移动文件,返回移动后文件的uri。使用callback异步回调。
2543
2544当存在同名文件时(即发生文件移动冲突时),可以重命名待移动的文件,再保存到目标文件夹。
2545
2546当前仅支持设备内移动,不支持跨设备移动。
2547
2548**模型约束**:此接口仅可在Stage模型下使用。
2549
2550**系统能力**:SystemCapability.FileManagement.UserFileService
2551
2552**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2553
2554**参数:**
2555
2556| 参数名     | 类型                        | 必填 | 说明                  |
2557| ---------- | --------------------------- | ---- | --------------------- |
2558| sourceFile | string                      | 是   | 待移动的源文件的uri。 |
2559| destFile   | string                      | 是   | 目标文件夹的uri。     |
2560| fileName   | string                      | 是   | 冲突文件的新名称。    |
2561| callback   | AsyncCallback&lt;string&gt; | 是   | 新路径下的文件uri。   |
2562
2563**错误码:**
2564
2565接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。
2566
2567**示例:**
2568
2569  ```ts
2570  import { BusinessError } from '@ohos.base';
2571  // 以内置存储目录为例
2572  // 示例代码sourceUri destUri表示Download目录下文件和文件夹,该uri是对应的fileInfo中uri
2573  // 开发者应根据自己实际获取的uri进行开发
2574  let sourceUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
2575  let destUri: string = "file://docs/storage/Users/currentUser/Download/test";
2576  let fileName: string;
2577  // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
2578  let fileAccessHelper : fileAccess.FileAccessHelper|undefined;
2579  try {
2580    if (fileAccessHelper != undefined) {
2581      fileAccessHelper.moveFile(sourceUri, destUri, fileName, (err: BusinessError, fileUri: string) => {
2582        if (err) {
2583          console.error("Failed to moveFile in async, errCode:" + err.code + ", errMessage:" + err.message);
2584        }
2585        console.log("moveFile sucess, fileUri: " + JSON.stringify(fileUri));
2586      });
2587    }
2588  } catch (err) {
2589    let error: BusinessError = err as BusinessError;
2590    console.error("moveFile failed, errCode:" + error.code + ", errMessage:" + error.message);
2591  }
2592  ```
2593
2594## CopyResult<sup>10+</sup>
2595
2596表示复制操作失败时的返回信息,复制成功时则没有返回信息。
2597
2598**系统能力**:SystemCapability.FileManagement.UserFileService
2599
2600**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2601
2602| 名称      | 类型   | 只读 | 可写 | 说明                |
2603| --------- | ------ | ---- | ---- | ----------------- |
2604| sourceUri | string | 是   | 否   | 源文件(夹) uri。                                         |
2605| destUri   | string | 是   | 否   | 产生冲突的目标文件的 uri。如果非冲突导致的错误,则为空。 |
2606| errCode   | number | 是   | 否   | 错误码。                                                 |
2607| errMsg    | string | 是   | 否   | 错误信息。                                               |
2608
2609## OPENFLAGS
2610
2611枚举,目前支持的文件打开的标志位。
2612
2613**模型约束**:此接口仅可在Stage模型下使用。
2614
2615**系统能力** :SystemCapability.FileManagement.UserFileService
2616
2617| 名称 | 值 | 说明 |
2618| ----- | ------ | ------ |
2619| READ | 0o0 | 读模式。 |
2620| WRITE | 0o1 | 写模式。 |
2621| WRITE_READ | 0o2 | 读写模式。 |
2622
2623## FILEKEY<sup>10+</sup>
2624
2625枚举,支持查询的键。
2626
2627**模型约束**:此接口仅可在Stage模型下使用。
2628
2629**系统能力** :SystemCapability.FileManagement.UserFileService
2630
2631| 名称          | 值            | 说明                                |
2632| ------------- | ------------- | ----------------------------------- |
2633| DISPLAY_NAME  | 'display_name'  | 文件名。                              |
2634| DATE_ADDED    | 'date_added'   | 文件创建的日期。例如1501925454。      |
2635| DATE_MODIFIED | 'date_modified' | 文件的修改日期。例如1665310670。      |
2636| RELATIVE_PATH | 'relative_path' | 相对路径。例如Pictures/Screenshots/。 |
2637| FILE_SIZE     | 'size'          | 文件(夹)大小(单位:字节)。        |
2638
2639## NotifyType<sup>10+</sup>
2640
2641枚举,通知类型。
2642
2643**模型约束**:此接口仅可在Stage模型下使用。
2644
2645**系统能力**:SystemCapability.FileManagement.UserFileService
2646
2647| 名称              | 值   | 说明                                                         |
2648| ----------------- | ---- | ------------------------------------------------------------ |
2649| NOTIFY_ADD        | 0    | 表示新增文件(详见registerObserver接口的示例2、示例3)。                                                 |
2650| NOTIFY_DELETE     | 1    | 表示删除文件(详见unregisterObserver(uri: string, callback: Callback&lt;NotifyMessage&gt;)接口的示例1、示例2)。                                               |
2651| NOTIFY_MOVED_TO   | 2    | 表示移动至该文件(对目录下子文件或目录执行rename操作,或外部文件或目录执行move操作到本文件。详见registerObserver接口的示例1,及unregisterObserver(uri: string)接口的示例1)。|
2652| NOTIFY_MOVED_FROM | 3    | 表示自该文件移出(对目录下子文件或目录执行rename操作,或子文件(夹)执行move操作从该文件夹内移出。详见registerObserver接口的示例1,及unregisterObserver(uri: string)接口的示例1)。 |
2653| NOTIFY_MOVE_SELF  | 4    | 表示本文件被移动(如对文件或文件夹执行rename或move操作时,监听该文件(夹)的callback收到该事件,详见registerObserver接口的示例1)。     |
2654| NOTIFY_DEVICE_ONLINE<sup>11+</sup>   | 5    | 表示设备上线。     |
2655| NOTIFY_DEVICE_OFFLINE<sup>11+</sup>   | 6    | 表示设备下线。     |
2656
2657## NotifyMessage<sup>10+</sup>
2658
2659通知回调函数的值。
2660
2661**模型约束**:此接口仅可在Stage模型下使用。
2662
2663**系统能力**:SystemCapability.FileManagement.UserFileService
2664
2665**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2666
2667| 名称 | 类型                        | 只读 | 可写 | 说明                                                      |
2668| ---- | --------------------------- | ---- | ---- | --------------------------------------------------------- |
2669| type | [NotifyType](#notifytype10) | 是   | 否   | 变更的通知类型。                                            |
2670| uris | Array&lt;string&gt;         | 是   | 否   | 所变更文件的uri集合,目前仅支持单条通知,后序支持多条通知。 |
2671
2672## MoveResult<sup>11+</sup>
2673
2674表示移动操作失败时的返回信息,移动成功时则没有返回信息。
2675
2676**模型约束**:此接口仅可在Stage模型下使用。
2677
2678**系统能力**:SystemCapability.FileManagement.UserFileService
2679
2680**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
2681
2682| 名称      | 类型   | 只读 | 可写 | 说明                                                         |
2683| --------- | ------ | ---- | ---- | ------------------------------------------------------------ |
2684| sourceUri | string | 是   | 否   | 源文件(夹) uri。                                               |
2685| destUri   | string | 是   | 否   | 产生冲突的目标文件的 uri。如果非冲突导致的错误,则为空。     |
2686| errCode   | number | 是   | 否   | 错误码。接口抛出错误码的详细介绍请参见[文件管理错误码](errorcode-filemanagement.md)。 |
2687| errMsg    | string | 是   | 否   | 错误信息。                                                   |
2688