• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.file.fileAccess (公共文件访问与管理)
2
3fileAccess模块是基于extension机制实现的一个对公共文件访问和操作的框架。该模块一方面对接各类文件管理服务,如媒体库、外置存储管理服务等,另一方面为系统应用提供一套统一的文件访问管理接口。其中,媒体库服务提供本地设备、分布式设备等公共文件访问服务;外置存储管理服务可以提供共享盘、U盘、SD卡等设备的公共文件访问服务。
4
5>**说明:**
6>
7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> - 本模块接口为系统接口,三方应用不支持调用,当前只支持FilePicker、文件管理器调用。
9
10## 导入模块
11
12```js
13import fileAccess from '@ohos.file.fileAccess';
14```
15
16## fileAccess.getFileAccessAbilityInfo
17
18getFileAccessAbilityInfo() : Promise<Array<Want>>
19
20以异步方法获取系统内extension配置为fileAccess类型的所有Want信息。使用Promise异步回调。
21
22**模型约束**:此接口仅可在Stage模型下使用。
23
24**系统能力**:SystemCapability.FileManagement.UserFileService
25
26**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
27
28**返回值:**
29
30  | 类型 | 说明 |
31  | --- | -- |
32  | Promise<Array<[Want](js-apis-app-ability-want.md)>> | 表示当前系统配置fileAccess的所有文件管理类服务 |
33
34**错误码:**
35
36接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
37
38**示例:**
39
40  ```js
41  async getFileAccessAbilityInfo() {
42    let wantInfos = [];
43    try {
44      wantInfos = await fileAccess.getFileAccessAbilityInfo();
45      console.log("getFileAccessAbilityInfo data " + JSON.stringify(wantInfos));
46    } catch (error) {
47      console.error("getFileAccessAbilityInfo failed, errCode:" + error.code + ", errMessage:" + error.message);
48    }
49  }
50  ```
51
52## fileAccess.getFileAccessAbilityInfo
53
54getFileAccessAbilityInfo(callback: AsyncCallback<Array<Want>>): void
55
56以异步方法获取系统内extension配置为fileAccess类型的所有Want信息。使用callback异步回调。
57
58**模型约束**:此接口仅可在Stage模型下使用。
59
60**系统能力**:SystemCapability.FileManagement.UserFileService
61
62**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
63
64**参数:**
65
66  | 参数名 | 类型 | 必填 | 说明 |
67  | --- | --- | --- | -- |
68  | callback | AsyncCallback<Array<[Want](js-apis-app-ability-want.md)>> | 是 | 表示当前系统配置fileAccess的所有文件管理类服务 |
69
70**错误码:**
71
72接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
73
74**示例:**
75
76  ```js
77  async getFileAccessAbilityInfo() {
78    try {
79      fileAccess.getFileAccessAbilityInfo(function (err, wantInfos) {
80        if (err) {
81          console.error("Failed to getFileAccessAbilityInfo in async, errCode:" + err.code + ", errMessage:" + err.message);
82          return;
83        }
84        console.log("getFileAccessAbilityInfo data " + JSON.stringify(wantInfos));
85      });
86    } catch (error) {
87      console.error("getFileAccessAbilityInfo failed, errCode:" + error.code + ", errMessage:" + error.message);
88    }
89  }
90  ```
91
92## fileAccess.createFileAccessHelper
93
94createFileAccessHelper(context: Context, wants: Array<Want>) : FileAccessHelper
95
96以同步方法创建连接指定wants的helper对象。
97
98**模型约束**:此接口仅可在Stage模型下使用。
99
100**系统能力**:SystemCapability.FileManagement.UserFileService
101
102**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
103
104**参数:**
105
106  | 参数名 | 类型 | 必填 | 说明 |
107  | --- | --- | --- | -- |
108  | context | [Context](js-apis-inner-application-context.md) | 是 | 代表ability的上下文的能力 |
109  | wants | Array<[Want](js-apis-app-ability-want.md)> | 是 | Want是一种基本通信组件,主要用于服务拉起 |
110
111**返回值:**
112
113  | 类型 | 说明 |
114  | --- | -- |
115  | [FileAccessHelper](#fileaccesshelper) | 提供文件访问和操作能力的helper对象 |
116
117**错误码:**
118
119接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
120
121**示例:**
122
123  ```js
124  createFileAccessHelper() {
125    let fileAccessHelper = null;
126    // wantInfos 从getFileAccessAbilityInfo()获取
127    // 创建只连接媒体库服务的helper对象
128    let wantInfos = [
129      {
130        "bundleName": "com.ohos.medialibrary.medialibrarydata",
131        "abilityName": "FileExtensionAbility",
132      },
133    ]
134    try {
135      // this.context 是EntryAbility 传过来的context
136      fileAccessHelper = fileAccess.createFileAccessHelper(this.context, wantInfos);
137      if (!fileAccessHelper)
138        console.error("createFileAccessHelper interface returns an undefined object");
139    } catch (error) {
140      console.error("createFileAccessHelper failed, errCode:" + error.code + ", errMessage:" + error.message);
141    }
142  }
143  ```
144
145## fileAccess.createFileAccessHelper
146
147createFileAccessHelper(context: Context) : FileAccessHelper
148
149以同步方法创建连接当前系统内所有文件管理服务的helper对象。
150
151**模型约束**:此接口仅可在Stage模型下使用。
152
153**系统能力**:SystemCapability.FileManagement.UserFileService
154
155**需要权限**:ohos.permission.FILE_ACCESS_MANAGERohos.permission.GET_BUNDLE_INFO_PRIVILEGED
156
157**参数:**
158
159  | 参数名 | 类型 | 必填 | 说明 |
160  | --- | --- | --- | -- |
161  | context | [Context](js-apis-inner-application-context.md) | 是 | ability的上下文的能力 |
162
163**返回值:**
164
165  | 类型 | 说明 |
166  | --- | -- |
167  | [FileAccessHelper](#fileaccesshelper) | 提供文件访问和操作的能力的helper对象 |
168
169**错误码:**
170
171接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
172
173**示例:**
174
175  ```js
176  createFileAccessHelper() {
177    let fileAccessHelperAllServer = null;
178    // 创建连接系统内所有配置fileAccess的文件管理类服务的helper对象
179    try {
180      // this.context 是EntryAbility 传过来的context
181      fileAccessHelperAllServer = fileAccess.createFileAccessHelper(this.context);
182      if (!fileAccessHelperAllServer)
183        console.error("createFileAccessHelper interface returns an undefined object");
184    } catch (error) {
185      console.error("createFileAccessHelper failed, errCode:" + error.code + ", errMessage:" + error.message);
186    }
187  }
188  ```
189
190## FileInfo
191
192表示文件(夹)属性信息和接口能力。
193
194**模型约束**:此接口仅可在Stage模型下使用。
195
196**系统能力**:SystemCapability.FileManagement.UserFileService197
198**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
199
200### 属性
201
202| 名称 | 类型   | 可读 | 可写 | 说明     |
203| ------ | ------ | -------- | ------ | -------- |
204| uri | string | 是 | 否 | 文件(夹)的uri |
205| fileName | string | 是 | 否 | 文件(夹)的名称 |
206| mode | number | 是 | 否 | 文件(夹)的权限信息 |
207| size | number | 是 | 否 |  文件(夹)的大小 |
208| mtime | number | 是 | 否 |  文件(夹)的修改时间 |
209| mimeType | string | 是 | 否 |  文件(夹)的媒体资源类型 |
210
211### listFile
212
213listFile(filter?: Filter) : FileIterator
214
215以同步方法从某个目录,基于过滤器,获取下一级符合条件的文件(夹)信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备过滤,外置存储设备不支持过滤。
216
217**模型约束**:此接口仅可在Stage模型下使用。
218
219**系统能力**:SystemCapability.FileManagement.UserFileService
220
221**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
222
223**参数:**
224
225  | 参数名 | 类型 | 必填 | 说明 |
226  | --- | --- | -- | -- |
227  | filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象  |
228
229**返回值:**
230
231  | 类型 | 说明 |
232  | --- | -- |
233  | [FileIterator](#fileiterator) | 文件(夹)信息的迭代器对象FileIterator |
234
235**错误码:**
236
237接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
238
239**示例:**
240
241  ```js
242  // fileInfoDir 表示某个目录信息
243  // let filter = { suffix : [".txt", ".jpg", ".xlsx"] };
244  let fileInfoDir = fileInfos[0];
245  let subfileInfos = [];
246  let isDone = false;
247  try {
248    let fileIterator = fileInfoDir.listFile();
249    // 含过滤器实现的listFile
250    // let fileIterator = rootInfo.listFile(filter);
251    if (!fileIterator) {
252      console.error("listFile interface returns an undefined object");
253      return;
254    }
255    while (!isDone) {
256      let result = fileIterator.next();
257      console.log("next result = " + JSON.stringify(result));
258      isDone = result.done;
259      if (!isDone)
260        subfileInfos.push(result.value);
261    }
262  } catch (error) {
263    console.error("listFile failed, errCode:" + error.code + ", errMessage:" + error.message);
264  }
265  ```
266
267### scanFile
268
269scanFile(filter?: Filter) : FileIterator
270
271以同步方法从某个目录,基于过滤器,递归获取符合条件的文件信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备。
272
273**模型约束**:此接口仅可在Stage模型下使用。
274
275**系统能力**:SystemCapability.FileManagement.UserFileService
276
277**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
278
279**参数:**
280
281  | 参数名 | 类型 | 必填 | 说明 |
282  | --- | --- | -- | -- |
283  | filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象  |
284
285**返回值:**
286
287  | 类型 | 说明 |
288  | --- | -- |
289  | [FileIterator](#fileiterator) | 文件信息的迭代器对象FileIterator |
290
291**错误码:**
292
293接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
294
295**示例:**
296
297  ```js
298  // fileInfoDir 表示某个目录信息
299  // let filter = {suffix : [".txt", ".jpg", ".xlsx"]};
300  let fileInfoDir = fileInfos[0];
301  let subfileInfos = [];
302  let isDone = false;
303  try {
304    let fileIterator = fileInfoDir.scanFile();
305    // 含过滤器实现的scanFile
306    // let fileIterator = rootInfo.scanFile(filter);
307    if (!fileIterator) {
308      console.error("scanFile interface returns an undefined object");
309      return;
310    }
311    while (!isDone) {
312      let result = fileIterator.next();
313      console.log("next result = " + JSON.stringify(result));
314      isDone = result.done;
315      if (!isDone)
316        subfileInfos.push(result.value);
317    }
318  } catch (error) {
319    console.error("scanFile failed, errCode:" + error.code + ", errMessage:" + error.message);
320  }
321  ```
322
323## FileIterator
324
325表示文件夹的迭代器对象。
326
327**模型约束**:此接口仅可在Stage模型下使用。
328
329**系统能力**:SystemCapability.FileManagement.UserFileService
330
331**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
332
333### next
334
335next() : { value: FileInfo, done: boolean }
336
337可以通过next同步方法获取下一级文件(夹)信息。
338
339**模型约束**:此接口仅可在Stage模型下使用。
340
341**系统能力**:SystemCapability.FileManagement.UserFileService342
343**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
344
345**返回值:**
346
347| 类型 | 说明 |
348| --- | -- |
349| {value: [FileInfo](#fileinfo), done: boolean} | 通过next遍历文件夹,直到done返回true结束;value字段返回fileInfo。|
350
351**错误码:**
352
353接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
354
355## RootInfo
356
357表示设备的根属性信息和接口能力。
358
359**模型约束**:此接口仅可在Stage模型下使用。
360
361**系统能力**:SystemCapability.FileManagement.UserFileService362
363**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
364
365### 属性
366
367| 名称 | 类型   | 可读 | 可写 | 说明     |
368| ------ | ------ | -------- | ------ | -------- |
369| deviceType | number | 是 | 否 |设备类型 |
370| uri | string | 是 | 否 | 设备根目录Uri |
371| displayName | string | 是 | 否 | 设备名称 |
372| deviceFlags | number | 是 | 否 | 设备支持的能力 |
373
374### listFile
375
376listFile(filter?: Filter) : FileIterator
377
378以同步方法从某设备根节点开始,基于过滤器,获取第一级符合条件的文件(夹)信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备过滤,外置存储设备不支持过滤。
379
380**模型约束**:此接口仅可在Stage模型下使用。
381
382**系统能力**:SystemCapability.FileManagement.UserFileService
383
384**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
385
386**参数:**
387
388  | 参数名 | 类型 | 必填 | 说明 |
389  | --- | --- | -- | -- |
390  | filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象  |
391
392**返回值:**
393
394  | 类型 | 说明 |
395  | --- | -- |
396  | [FileIterator](#fileiterator) | 文件(夹)信息的迭代器对象FileIterator |
397
398**错误码:**
399
400接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
401
402**示例:**
403
404  ```js
405  // rootinfos 从getRoots()获取
406  // let filter = {suffix : [".txt", ".jpg", ".xlsx"]};
407  let rootInfo = rootinfos[0];
408  let fileInfos = [];
409  let isDone = false;
410  try {
411    let fileIterator = rootInfo.listFile();
412    // 含过滤器实现的listFile
413    // let fileIterator = rootInfo.listFile(filter);
414    if (!fileIterator) {
415      console.error("listFile interface returns an undefined object");
416      return;
417    }
418    while (!isDone) {
419      let result = fileIterator.next();
420      console.log("next result = " + JSON.stringify(result));
421      isDone = result.done;
422      if (!isDone)
423        fileInfos.push(result.value);
424    }
425  } catch (error) {
426    console.error("listFile failed, errCode:" + error.code + ", errMessage:" + error.message);
427  }
428  ```
429
430### scanFile
431
432scanFile(filter?: Filter) : FileIterator
433
434以同步方法从某设备根节点开始,基于过滤器,递归获取符合条件的文件信息的迭代器对象FileIterator,然后通过[next](#next)方法返回[FileInfo](#fileinfo)。目前仅支持内置存储设备。
435
436**模型约束**:此接口仅可在Stage模型下使用。
437
438**系统能力**:SystemCapability.FileManagement.UserFileService
439
440**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
441
442**参数:**
443
444  | 参数名 | 类型 | 必填 | 说明 |
445  | --- | --- | -- | -- |
446  | filter | [Filter](js-apis-file-fs.md#filter) | 否 | 过滤器对象  |
447
448**返回值:**
449
450  | 类型 | 说明 |
451  | --- | -- |
452  | [FileIterator](#fileiterator) | 文件信息的迭代器对象FileIterator |
453
454**错误码:**
455
456接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
457
458**示例:**
459
460  ```js
461  // rootInfos 从 getRoots()获取
462  // let filter = {suffix : [".txt", ".jpg", ".xlsx"]};
463  let rootInfo = rootInfos[0];
464  let fileInfos = [];
465  let isDone = false;
466  try {
467    let fileIterator = rootInfo.scanFile();
468    // 含过滤器实现的scanFile
469    // let fileIterator = rootInfo.scanFile(filter);
470    if (!fileIterator) {
471      console.error("scanFile interface returns undefined object");
472      return;
473    }
474    while (!isDone) {
475      let result = fileIterator.next();
476      console.log("next result = " + JSON.stringify(result));
477      isDone = result.done;
478      if (!isDone)
479        fileInfos.push(result.value);
480    }
481  } catch (error) {
482    console.error("scanFile failed, errCode:" + error.code + ", errMessage:" + error.message);
483  }
484  ```
485
486## RootIterator
487
488表示设备根目录的迭代器对象。
489
490**模型约束**:此接口仅可在Stage模型下使用。
491
492**系统能力**:SystemCapability.FileManagement.UserFileService
493
494**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
495
496### next
497
498next() : { value: RootInfo, done: boolean }
499
500通过next同步方法获取下一级设备根目录。
501
502**模型约束**:此接口仅可在Stage模型下使用。
503
504**系统能力**:SystemCapability.FileManagement.UserFileService505
506**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
507
508**返回值:**
509
510| 类型 | 说明 |
511| --- | -- |
512| {value: [RootInfo](#rootinfo), done: boolean} | 通过next遍历文件夹,直到done返回true结束;value字段返回rootInfo。|
513
514**错误码:**
515
516接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
517
518## FileAccessHelper
519
520FileAccessHelper对象。
521
522**模型约束**:此接口仅可在Stage模型下使用。
523
524**系统能力**:SystemCapability.FileManagement.UserFileService
525
526**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
527
528### getRoots
529
530getRoots() : Promise<RootIterator>
531
532以异步方法获取helper对象连接的文件管理服务类的设备根节点信息。使用Promise异步回调。
533该方法返回迭代器对象RootIterator,然后通过[next](#next-1)方法返回[RootInfo](#rootinfo)。
534
535**模型约束**:此接口仅可在Stage模型下使用。
536
537**系统能力**:SystemCapability.FileManagement.UserFileService
538
539**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
540
541**返回值:**
542
543| 类型 | 说明 |
544| --- | -- |
545| Promise<[RootIterator](#rootiterator)> | 根设备目录信息组成迭代器对象 |
546
547**错误码:**
548
549接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
550
551**示例:**
552
553  ```js
554  async getRoots() {
555    let rootIterator = null;
556    let rootinfos = [];
557    let isDone = false;
558    try {
559      // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
560      rootIterator = await fileAccessHelper.getRoots();
561      if (!rootIterator) {
562        console.error("getRoots interface returns an undefined object");
563        return;
564      }
565      while (!isDone) {
566        let result = rootIterator.next();
567        console.log("next result = " + JSON.stringify(result));
568        isDone = result.done;
569        if (!isDone)
570          rootinfos.push(result.value);
571      }
572    } catch (error) {
573      console.error("getRoots failed, errCode:" + error.code + ", errMessage:" + error.message);
574    }
575  }
576  ```
577
578### getRoots
579
580getRoots(callback:AsyncCallback<RootIterator>) : void
581
582以异步方法获取helper对象连接的文件管理服务类的设备根节点信息。使用callback异步回调。
583callback带回迭代器对象RootIterator,然后通过[next](#next-1)方法返回[RootInfo](#rootinfo)。
584
585**模型约束**:此接口仅可在Stage模型下使用。
586
587**系统能力**:SystemCapability.FileManagement.UserFileService
588
589**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
590
591**参数:**
592
593| 参数名 | 类型 | 必填 | 说明 |
594| --- | --- | --- | -- |
595| callback | AsyncCallback<[RootIterator](#rootiterator)> | 是 | 根设备目录信息组成迭代器对象 |
596
597**错误码:**
598
599接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
600
601**示例:**
602
603  ```js
604  async getRoots() {
605    let rootinfos = [];
606    let isDone = false;
607    try {
608      // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
609      fileAccessHelper.getRoots(function (err, rootIterator) {
610        if (err) {
611          console.error("Failed to getRoots in async, errCode:" + err.code + ", errMessage:" + err.message);
612          return;
613        }
614        while (!isDone) {
615          let result = rootIterator.next();
616          console.log("next result = " + JSON.stringify(result));
617          isDone = result.done;
618          if (!isDone)
619            rootinfos.push(result.value);
620        }
621      });
622    } catch (error) {
623      console.error("getRoots failed, errCode:" + error.code + ", errMessage:" + error.message);
624    }
625  }
626  ```
627
628### createFile
629
630createFile(uri: string, displayName: string) : Promise<string>
631
632以异步方法创建文件到指定目录,返回新文件uri。使用Promise异步回调。
633
634**模型约束**:此接口仅可在Stage模型下使用。
635
636**系统能力**:SystemCapability.FileManagement.UserFileService
637
638**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
639
640**参数:**
641
642| 参数名 | 类型 | 必填 | 说明 |
643| --- | --- | --- | -- |
644| uri | string | 是 | 表示需要创建文件的父目录的Uri |
645| displayName | string | 是 | 待创建文件的名称,默认本地文件需要添加后缀 |
646
647**返回值:**
648
649| 类型 | 说明 |
650| --- | -- |
651| Promise<string> | 新创建的文件的uri |
652
653**错误码:**
654
655接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
656
657**示例:**
658
659  ```js
660  // 以媒体库uri为例
661  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
662  // 开发者应根据自己实际获取的uri进行开发
663  let sourceUri = "datashare:///media/file/6";
664  let displayName = "file1"
665  let fileUri = null;
666  try {
667    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
668    fileUri = await fileAccessHelper.createFile(sourceUri, displayName)
669    if (!fileUri) {
670      console.error("createFile return undefined object");
671      return;
672    }
673    console.log("createFile sucess, fileUri: " + JSON.stringify(fileUri));
674  } catch (error) {
675    console.error("createFile failed, errCode:" + error.code + ", errMessage:" + error.message);
676  };
677  ```
678
679### createFile
680
681createFile(uri: string, displayName: string, callback: AsyncCallback<string>) : void
682
683以异步方法创建文件到指定目录,返回新文件uri。使用callback异步回调。
684
685**模型约束**:此接口仅可在Stage模型下使用。
686
687**系统能力**:SystemCapability.FileManagement.UserFileService
688
689**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
690
691**参数:**
692
693| 参数名 | 类型 | 必填 | 说明 |
694| --- | --- | --- | -- |
695| uri | string | 是 | 表示需要创建文件的父目录的Uri |
696| displayName | string | 是 | 待创建文件的名称,默认本地文件需要添加后缀 |
697| callback | AsyncCallback<string> | 是 | 新创建的文件的uri |
698
699**错误码:**
700
701接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
702
703**示例:**
704
705  ```js
706  // 以媒体库uri为例
707  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
708  // 开发者应根据自己实际获取的uri进行开发
709  let sourceUri = "datashare:///media/file/6";
710  let displayName = "file1"
711  try {
712    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
713    fileAccessHelper.createFile(sourceUri, displayName, function (err, fileUri) {
714      if (err) {
715        console.error("Failed to createFile in async, errCode:" + err.code + ", errMessage:" + err.message);
716        return;
717      }
718      console.log("createFile sucess, fileUri: " + JSON.stringify(fileUri));
719    });
720  } catch (error) {
721    console.error("createFile failed, errCode:" + error.code + ", errMessage:" + error.message);
722  };
723  ```
724
725### mkDir
726
727mkDir(parentUri: string, displayName: string) : Promise<string>
728
729以异步方法创建文件夹到指定目录,返回文件夹uri。使用Promise异步回调。
730
731**模型约束**:此接口仅可在Stage模型下使用。
732
733**系统能力**:SystemCapability.FileManagement.UserFileService
734
735**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
736
737**参数:**
738
739| 参数名 | 类型 | 必填 | 说明 |
740| --- | --- | --- | -- |
741| parentUri | string | 是 | 表示需要创建文件夹的父目录的Uri |
742| displayName | string | 是 | 待创建文件夹的名称|
743
744**返回值:**
745
746| 类型 | 说明 |
747| --- | -- |
748| Promise<string> | 新创建的文件夹的uri |
749
750**错误码:**
751
752接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
753
754**示例:**
755
756  ```js
757  // 以媒体库uri为例
758  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
759  // 开发者应根据自己实际获取的uri进行开发
760  let sourceUri = "datashare:///media/file/6";
761  let dirName = "dirTest"
762  let dirUri = null;
763  try {
764    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
765    dirUri = await fileAccessHelper.mkDir(sourceUri, dirName)
766    if (!dirUri) {
767      console.error("mkDir return undefined object");
768      return;
769    }
770    console.log("mkDir sucess, dirUri: " + JSON.stringify(dirUri));
771  } catch (error) {
772    console.error("mkDir failed, errCode:" + error.code + ", errMessage:" + error.message);
773  };
774  ```
775
776### mkDir
777
778mkDir(parentUri: string, displayName: string, callback: AsyncCallback<string>) : void
779
780以异步方法创建文件夹到指定目录,返回文件夹uri。使用callback异步回调。
781
782**模型约束**:此接口仅可在Stage模型下使用。
783
784**系统能力**:SystemCapability.FileManagement.UserFileService
785
786**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
787
788**参数:**
789
790| 参数名 | 类型 | 必填 | 说明 |
791| --- | --- | --- | -- |
792| parentUri | string | 是 | 表示需要创建文件夹的父目录的Uri |
793| displayName | string | 是 | 待创建文件夹的名称|
794| callback | AsyncCallback<string> | 是 | 新创建的文件夹的uri |
795
796**错误码:**
797
798接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
799
800**示例:**
801
802  ```js
803  // 以媒体库uri为例
804  // 示例代码sourceUri表示Download目录,该uri是对应的fileInfo中uri
805  // 开发者应根据自己实际获取的uri进行开发
806  let sourceUri = "datashare:///media/file/6";
807  let dirName = "dirTest"
808  try {
809    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
810    fileAccessHelper.mkDir(sourceUri, dirName, function (err, dirUri) {
811      if (err) {
812        console.error("Failed to mkDir in async, errCode:" + err.code + ", errMessage:" + err.message);
813        return;
814      }
815      console.log("mkDir sucess, dirUri: " + JSON.stringify(dirUri));
816    });
817  } catch (error) {
818    console.error("mkDir failed, errCode:" + error.code + ", errMessage:" + error.message);
819  };
820  ```
821
822### openFile
823
824openFile(uri: string, flags: OPENFLAGS) : Promise<number>
825
826以异步方法打开文件,返回文件描述符。使用Promise异步回调。
827
828**模型约束**:此接口仅可在Stage模型下使用。
829
830**系统能力**:SystemCapability.FileManagement.UserFileService
831
832**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
833
834**参数:**
835
836| 参数名 | 类型 | 必填 | 说明 |
837| --- | --- | --- | -- |
838| uri | string | 是 | 待打开文件的uri |
839| flags | [OPENFLAGS](#openflags) | 是 | 文件打开的标志 |
840
841**返回值:**
842
843| 类型 | 说明 |
844| --- | -- |
845| Promise<number> | 文件描述符 |
846
847**错误码:**
848
849接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
850
851**示例:**
852
853  ```js
854  // 以媒体库uri为例
855  // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
856  // 开发者应根据自己实际获取的uri进行开发
857  let targetUri  = "datashare:///media/file/100";
858  try {
859    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
860    let fd = await fileAccessHelper.openFile(targetUri, fileAccess.OPENFLAGS.READ);
861  } catch (error) {
862    console.error("openFile failed, errCode:" + error.code + ", errMessage:" + error.message);
863  };
864  ```
865
866### openFile
867
868openFile(uri: string, flags: OPENFLAGS, callback: AsyncCallback<number>) : void
869
870以异步方法打开文件,返回文件描述符。使用callback异步回调。
871
872**模型约束**:此接口仅可在Stage模型下使用。
873
874**系统能力**:SystemCapability.FileManagement.UserFileService
875
876**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
877
878**参数:**
879
880| 参数名 | 类型 | 必填 | 说明 |
881| --- | --- | --- | -- |
882| uri | string | 是 | 待打开文件的uri |
883| flags | [OPENFLAGS](#openflags) | 是 | 文件打开的标志 |
884| callback | AsyncCallback<number> | 是 | 文件描述符 |
885
886**错误码:**
887
888接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
889
890**示例:**
891
892  ```js
893  // 以媒体库uri为例
894  // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
895  // 开发者应根据自己实际获取的uri进行开发
896  let targetUri  = "datashare:///media/file/100";
897  try {
898    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
899    fileAccessHelper.openFile(targetUri, fileAccess.OPENFLAGS.READ, function (err, fd) {
900      if (err) {
901        console.error("Failed to openFile in async, errCode:" + err.code + ", errMessage:" + err.message);
902        return;
903      }
904      console.log("openFile sucess, fd: " + fd);
905    });
906  } catch (error) {
907    console.error("openFile failed, errCode:" + error.code + ", errMessage:" + error.message);
908  };
909  ```
910
911### delete
912
913delete(uri: string) : Promise<number>
914
915以异步方法删除文件(夹),返回错误码。使用Promise异步回调。
916
917**模型约束**:此接口仅可在Stage模型下使用。
918
919**系统能力**:SystemCapability.FileManagement.UserFileService
920
921**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
922
923**参数:**
924
925| 参数名 | 类型 | 必填 | 说明 |
926| --- | --- | --- | -- |
927| uri | string | 是 | 待删除文件(夹)的uri |
928
929**返回值:**
930
931| 类型 | 说明 |
932| --- | -- |
933| Promise<number&gt | 删除操作的错误码 |
934
935**错误码:**
936
937接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
938
939**示例:**
940
941  ```js
942  // 以媒体库uri为例
943  // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
944  // 开发者应根据自己实际获取的uri进行开发
945  let targetUri = "datashare:///media/file/100";
946  try {
947    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
948    let code = await fileAccessHelper.delete(targetUri);
949    if (code != 0)
950      console.error("delete failed, code " + code);
951  } catch (error) {
952    console.error("delete failed, errCode:" + error.code + ", errMessage:" + error.message);
953  };
954  ```
955
956### delete
957
958delete(uri: string, callback: AsyncCallback<number>) : void
959
960以异步方法删除文件(夹),返回错误码。使用callback异步回调。
961
962**模型约束**:此接口仅可在Stage模型下使用。
963
964**系统能力**:SystemCapability.FileManagement.UserFileService
965
966**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
967
968**参数:**
969
970| 参数名 | 类型 | 必填 | 说明 |
971| --- | --- | --- | -- |
972| uri | string | 是 | 待删除文件(夹)的uri |
973| callback | AsyncCallback<number> | 是 | 删除操作的错误码 |
974
975**错误码:**
976
977接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
978
979**示例:**
980
981  ```js
982  // 以媒体库uri为例
983  // 示例代码targetUri表示Download目录下文件,该uri是对应的fileInfo中uri
984  // 开发者应根据自己实际获取的uri进行开发
985  let targetUri = "datashare:///media/file/100";
986  try {
987    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
988    fileAccessHelper.delete(targetUri, function (err, code) {
989      if (err) {
990        console.error("Failed to delete in async, errCode:" + err.code + ", errMessage:" + err.message);
991        return;
992      }
993      console.log("delete sucess, code: " + code);
994    });
995  } catch (error) {
996    console.error("delete failed, errCode:" + error.code + ", errMessage:" + error.message);
997  };
998  ```
999
1000### move
1001
1002move(sourceFile: string, destFile: string) : Promise<string>
1003
1004以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用Promise异步回调。目前仅支持设备内移动,跨设备不支持移动。
1005
1006**模型约束**:此接口仅可在Stage模型下使用。
1007
1008**系统能力**:SystemCapability.FileManagement.UserFileService
1009
1010**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1011
1012**参数:**
1013
1014| 参数名 | 类型 | 必填 | 说明 |
1015| --- | --- | --- | -- |
1016| sourceFile | string | 是 | 待移动的源文件(夹)的uri |
1017| destFile | string | 是 | 目标文件夹的uri |
1018
1019**返回值:**
1020
1021| 类型 | 说明 |
1022| ----- | ------ |
1023| Promise<string> | 新路径下的文件(夹)的uri |
1024
1025**错误码:**
1026
1027接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1028
1029**示例:**
1030
1031  ```js
1032  // 以媒体库uri为例
1033  // 示例代码sourceFile destFile表示Download目录下文件或文件夹,该uri是对应的fileInfo中uri
1034  // 开发者应根据自己实际获取的uri进行开发
1035  let sourceFile = "datashare:///media/file/102";
1036  let destFile = "datashare:///media/file/101";
1037  try {
1038    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1039    let fileUri = await fileAccessHelper.move(sourceFile, destFile);
1040    console.log("move sucess, fileUri: " + JSON.stringify(fileUri));
1041  } catch (error) {
1042    console.error("move failed, errCode:" + error.code + ", errMessage:" + error.message);
1043  };
1044  ```
1045
1046### move
1047
1048move(sourceFile: string, destFile: string, callback: AsyncCallback<string>) : void
1049
1050以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用callback异步回调。目前仅支持设备内移动,跨设备不支持移动。
1051
1052**模型约束**:此接口仅可在Stage模型下使用。
1053
1054**系统能力**:SystemCapability.FileManagement.UserFileService
1055
1056**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1057
1058**参数:**
1059
1060| 参数名 | 类型 | 必填 | 说明 |
1061| --- | --- | --- | -- |
1062| sourceFile | string | 是 | 待移动的源文件(夹)的uri |
1063| destFile | string | 是 | 目标文件夹的uri |
1064| callback | AsyncCallback<string> | 是 | 新路径下的文件(夹)的uri |
1065
1066**错误码:**
1067
1068接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1069
1070**示例:**
1071
1072  ```js
1073  // 以媒体库uri为例
1074  // 示例代码sourceFile destFile表示Download目录下文件或文件夹,该uri是对应的fileInfo中uri
1075  // 开发者应根据自己实际获取的uri进行开发
1076  let sourceFile = "datashare:///media/file/102";
1077  let destFile = "datashare:///media/file/101";
1078  try {
1079    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1080    fileAccessHelper.move(sourceFile, destFile, function (err, fileUri) {
1081      if (err) {
1082        console.error("Failed to move in async, errCode:" + err.code + ", errMessage:" + err.message);
1083        return;
1084      }
1085      console.log("move sucess, fileUri: " + JSON.stringify(fileUri));
1086    });
1087  } catch (error) {
1088    console.error("move failed, errCode:" + error.code + ", errMessage:" + error.message);
1089  };
1090  ```
1091
1092### rename
1093
1094rename(uri: string, displayName: string) : Promise<string>
1095
1096以异步方法重命名文件(夹),返回重命名后的文件(夹)的Uri。使用Promise异步回调。
1097
1098**模型约束**:此接口仅可在Stage模型下使用。
1099
1100**系统能力**:SystemCapability.FileManagement.UserFileService
1101
1102**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1103
1104**参数:**
1105
1106| 参数名 | 类型 | 必填 | 说明 |
1107| --- | --- | --- | -- |
1108| uri | string | 是 | 源文件(夹)的uri |
1109| displayName | string | 是 | 文件(夹)名,支持带后缀 |
1110
1111**返回值:**
1112
1113| 类型 | 说明 |
1114| --- | -- |
1115| Promise<string> | 重命名后的文件(夹)的uri |
1116
1117**错误码:**
1118
1119接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1120
1121**示例:**
1122
1123  ```js
1124  // 以媒体库uri为例
1125  // 示例代码sourceDir表示Download目录下文件,该uri是对应的fileInfo中uri
1126  // 开发者应根据自己实际获取的uri进行开发
1127  let sourceDir = "datashare:///media/file/100";
1128  try {
1129    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1130    let DestDir = await fileAccessHelper.rename(sourceDir, "testDir");
1131    console.log("rename sucess, DestDir: " + JSON.stringify(DestDir));
1132  } catch (error) {
1133    console.error("rename failed, errCode:" + error.code + ", errMessage:" + error.message);
1134  };
1135  ```
1136
1137### rename
1138
1139rename(uri: string, displayName: string, callback: AsyncCallback<string>) : void
1140
1141以异步方法重命名文件(夹),返回重命名后的文件(夹)的Uri。使用callback异步回调。
1142
1143**模型约束**:此接口仅可在Stage模型下使用。
1144
1145**系统能力**:SystemCapability.FileManagement.UserFileService
1146
1147**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1148
1149**参数:**
1150
1151| 参数名 | 类型 | 必填 | 说明 |
1152| --- | --- | --- | -- |
1153| uri | string | 是 | 源文件(夹)的uri |
1154| displayName | string | 是 | 文件(夹)名,支持带后缀 |
1155| callback | AsyncCallback<string> | 是 | 重命名后的文件(夹)的uri |
1156
1157**错误码:**
1158
1159接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1160
1161**示例:**
1162
1163  ```js
1164  // 以媒体库uri为例
1165  // 示例代码sourceDir表示Download目录下文件,该uri是对应的fileInfo中uri
1166  // 开发者应根据自己实际获取的uri进行开发
1167  let sourceDir = "datashare:///media/file/100";
1168  try {
1169    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1170    fileAccessHelper.rename(sourceDir, "testDir", function (err, DestDir) {
1171      if (err) {
1172        console.error("Failed to rename in async, errCode:" + err.code + ", errMessage:" + err.message);
1173        return;
1174      }
1175      console.log("rename sucess, DestDir: " + JSON.stringify(DestDir));
1176    });
1177  } catch (error) {
1178    console.error("rename failed, errCode:" + error.code + ", errMessage:" + error.message);
1179  };
1180  ```
1181
1182### access
1183
1184access(sourceFileUri: string) : Promise<boolean>
1185
1186以异步方法判断文件(夹)是否存在。使用Promise异步回调。
1187
1188**模型约束**:此接口仅可在Stage模型下使用。
1189
1190**系统能力**:SystemCapability.FileManagement.UserFileService
1191
1192**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1193
1194**参数:**
1195
1196| 参数名 | 类型 | 必填 | 说明 |
1197| --- | --- | --- | -- |
1198| sourceFileUri | string | 是 | 文件(夹)的uri |
1199
1200**返回值:**
1201
1202| 类型 | 说明 |
1203| --- | -- |
1204| Promise<boolean> | 文件(夹)是否存在 |
1205
1206**错误码:**
1207
1208接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1209
1210**示例:**
1211
1212  ```js
1213  // 以媒体库uri为例
1214  // 示例代码sourceDir表示Download目录下文件,该uri是对应的fileInfo中uri
1215  // 开发者应根据自己实际获取的uri进行开发
1216  let sourceDir = "datashare:///media/file/100";
1217  try {
1218    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1219    let existJudgment = await fileAccessHelper.access(sourceDir);
1220    if (existJudgment)
1221      console.log("sourceDir exists");
1222    else
1223      console.log("sourceDir does not exist");
1224  } catch (error) {
1225    console.error("access failed, errCode:" + error.code + ", errMessage:" + error.message);
1226  };
1227  ```
1228
1229### access
1230
1231access(sourceFileUri: string, callback: AsyncCallback<boolean>) : void
1232
1233以异步方法判断文件(夹)是否存在。使用callback异步回调。
1234
1235**模型约束**:此接口仅可在Stage模型下使用。
1236
1237**系统能力**:SystemCapability.FileManagement.UserFileService
1238
1239**需要权限**:ohos.permission.FILE_ACCESS_MANAGER
1240
1241**参数:**
1242
1243| 参数名 | 类型 | 必填 | 说明 |
1244| --- | --- | --- | -- |
1245| sourceFileUri | string | 是 | 文件(夹)的uri |
1246| callback | AsyncCallback<boolean> | 是 | 文件(夹)是否存在 |
1247
1248**错误码:**
1249
1250接口抛出错误码的详细介绍请参见[文件管理错误码](../errorcodes/errorcode-filemanagement.md)。
1251
1252**示例:**
1253
1254  ```js
1255  // 以媒体库uri为例
1256  // 示例代码sourceDir表示Download目录下文件,该uri是对应的fileInfo中uri
1257  // 开发者应根据自己实际获取的uri进行开发
1258  let sourceDir = "datashare:///media/file/100";
1259  try {
1260    // fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
1261    fileAccessHelper.access(sourceDir, function (err, existJudgment) {
1262      if (err) {
1263        console.error("Failed to access in async, errCode:" + err.code + ", errMessage:" + err.message);
1264        return;
1265      }
1266      if (existJudgment)
1267        console.log("sourceDir exists");
1268      else
1269        console.log("sourceDir does not exist");
1270    });
1271  } catch (error) {
1272    console.error("access failed, errCode:" + error.code + ", errMessage:" + error.message);
1273  };
1274  ```
1275
1276## OPENFLAGS
1277
1278目前支持的文件打开的标志位。
1279
1280**系统能力:** SystemCapability.FileManagement.UserFileService
1281
1282| 名称 | 值 | 说明 |
1283| ----- | ------ | ------ |
1284| READ | 0o0 | 读模式。 |
1285| WRITE | 0o1 | 写模式。 |
1286| WRITE_READ | 0o2 | 读写模式。 |
1287