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