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_MANAGER 和 ohos.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_MANAGER 和 ohos.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_MANAGER 和 ohos.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_MANAGER 和 ohos.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.UserFileService。 634 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.UserFileService。 672 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.UserFileService。 711 712**需要权限**:ohos.permission.FILE_ACCESS_MANAGER 713 714**参数:** 715 716 | 参数名 | 类型 | 必填 | 说明 | 717 | --- | --- | --- | -- | 718 | uri | string | 是 | 待删除文件(夹)的uri | 719 720**返回值:** 721 722| 类型 | 说明 | 723| --- | -- | 724| Promise<number> | 删除操作的错误码 | 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.UserFileService。 750 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.UserFileService。 788 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.UserFileService。 828 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.UserFileService。 868 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.UserFileService。 907 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.UserFileService。 946 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.UserFileService。 987 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.UserFileService。 1028 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.UserFileService。 1044 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.UserFileService。 1058 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.UserFileService。 1075 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