1# 文件管理 2 3该模块提供文件存储管理能力,包括文件基本管理、文件目录管理、文件信息统计、文件流式读写等常用功能。 4 5>  **说明:** 6> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 7 8 9## 导入模块 10 11```js 12import fileio from '@ohos.fileio'; 13``` 14 15 16## 使用说明 17 18使用该功能模块对文件/目录进行操作前,需要先获取其应用沙箱路径,获取方式及其接口用法请参考: 19 20**Stage模型** 21 22 ```js 23import Ability from '@ohos.application.Ability'; 24class MainAbility extends Ability { 25 onWindowStageCreate(windowStage) { 26 let context = this.context; 27 let path = context.filesDir; 28 } 29} 30 ``` 31 32 Stage模型context的具体获取方法参见[Stage模型](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-context.md#abilitycontext)。 33 34**FA模型** 35 36 ```js 37 import featureAbility from '@ohos.ability.featureAbility'; 38 let context = featureAbility.getContext(); 39 context.getFilesDir().then((data) => { 40 let path = data; 41 }) 42 ``` 43 44 FA模型context的具体获取方法参见[FA模型](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-Context.md#context%E6%A8%A1%E5%9D%97)。 45 46## fileio.stat 47 48stat(path: string): Promise<Stat> 49 50获取文件信息,使用Promise异步回调。 51 52**系统能力**:SystemCapability.FileManagement.File.FileIO 53 54**参数:** 55 56| 参数名 | 类型 | 必填 | 说明 | 57| ------ | ------ | ---- | -------------------------- | 58| path | string | 是 | 待获取文件的应用沙箱路径。 | 59 60**返回值:** 61 62 | 类型 | 说明 | 63 | ---------------------------- | ---------- | 64 | Promise<[Stat](#stat)> | Promise对象。返回文件的具体信息。 | 65 66**示例:** 67 68 ```js 69 fileio.stat(path).then(function(stat){ 70 console.info("getFileInfo succeed:"+ JSON.stringify(stat)); 71 }).catch(function(err){ 72 console.info("getFileInfo failed with error:"+ err); 73 }); 74 ``` 75 76 77## fileio.stat 78 79stat(path:string, callback:AsyncCallback<Stat>): void 80 81获取文件信息,使用callback异步回调。 82 83**系统能力**:SystemCapability.FileManagement.File.FileIO 84 85**参数:** 86 87| 参数名 | 类型 | 必填 | 说明 | 88| -------- | ---------------------------------- | ---- | ------------------------------ | 89| path | string | 是 | 待获取文件的应用沙箱路径。 | 90| callback | AsyncCallback<[Stat](#stat)> | 是 | 异步获取文件的信息之后的回调。 | 91 92**示例:** 93 94 ```js 95 fileio.stat(path, function (err, stat) { 96 // example code in Stat 97 }); 98 ``` 99 100 101## fileio.statSync 102 103statSync(path:string): Stat 104 105以同步方法获取文件的信息。 106 107**系统能力**:SystemCapability.FileManagement.File.FileIO 108 109**参数:** 110 111| 参数名 | 类型 | 必填 | 说明 | 112| ------ | ------ | ---- | -------------------------- | 113| path | string | 是 | 待获取文件的应用沙箱路径。 | 114 115 116**返回值:** 117 118 | 类型 | 说明 | 119 | ------------- | ---------- | 120 | [Stat](#stat) | 表示文件的具体信息。 | 121 122**示例:** 123 124 ```js 125 let stat = fileio.statSync(path); 126 // example code in Stat 127 ``` 128 129 130## fileio.opendir 131 132opendir(path: string): Promise<Dir> 133 134打开文件目录,使用Promise异步回调。 135 136**系统能力**:SystemCapability.FileManagement.File.FileIO 137 138**参数:** 139 140| 参数名 | 类型 | 必填 | 说明 | 141| ------ | ------ | ---- | ------------------------------ | 142| path | string | 是 | 待打开文件目录的应用沙箱路径。 | 143 144**返回值:** 145 146 | 类型 | 说明 | 147 | -------------------------- | -------- | 148 | Promise<[Dir](#dir)> | Promise对象。返回Dir对象。 | 149 150**示例:** 151 152 ```js 153 fileio.opendir(path).then(function(dir){ 154 console.info("opendir succeed:"+ JSON.stringify(dir)); 155 }).catch(function(err){ 156 console.info("opendir failed with error:"+ err); 157 }); 158 ``` 159 160 161## fileio.opendir 162 163opendir(path: string, callback: AsyncCallback<Dir>): void 164 165打开文件目录,使用callback异步回调。 166 167**系统能力**:SystemCapability.FileManagement.File.FileIO 168 169**参数:** 170 171| 参数名 | 类型 | 必填 | 说明 | 172| -------- | -------------------------------- | ---- | ------------------------------ | 173| path | string | 是 | 待打开文件目录的应用沙箱路径。 | 174| callback | AsyncCallback<[Dir](#dir)> | 是 | 异步打开文件目录之后的回调。 | 175 176**示例:** 177 178 ```js 179 fileio.opendir(path, function (err, dir) { 180 // example code in Dir struct 181 // use read/readSync/close 182 }); 183 ``` 184 185 186## fileio.opendirSync 187 188opendirSync(path: string): Dir 189 190以同步方法打开文件目录。 191 192**系统能力**:SystemCapability.FileManagement.File.FileIO 193 194 195**参数:** 196 197| 参数名 | 类型 | 必填 | 说明 | 198| ------ | ------ | ---- | ------------------------------ | 199| path | string | 是 | 待打开文件目录的应用沙箱路径。 | 200 201**返回值:** 202 203 | 类型 | 说明 | 204 | ----------- | -------- | 205 | [Dir](#dir) | 返回Dir对象。 | 206 207**示例:** 208 209 ```js 210 let dir = fileio.opendirSync(path); 211 // example code in Dir struct 212 // use read/readSync/close 213 ``` 214 215 216## fileio.access 217 218access(path: string, mode?: number): Promise<void> 219 220检查当前进程是否可访问某文件,使用Promise异步回调。 221 222**系统能力**:SystemCapability.FileManagement.File.FileIO 223 224**参数:** 225 226| 参数名 | 类型 | 必填 | 说明 | 227| ------ | ------ | ---- | ------------------------------------------------------------ | 228| path | string | 是 | 待访问文件的应用沙箱路径。 | 229| mode | number | 否 | 访问文件时的选项,可给定如下选项,以按位或的方式使用多个选项,默认给定0。<br/>确认当前进程是否具有对应权限:<br/>- 0:确认文件是否存在。<br/>- 1:确认当前进程是否具有可执行权限。<br/>- 2:确认当前进程是否具有写权限。<br/>- 4:确认当前进程是否具有读权限。 | 230 231**返回值:** 232 233 | 类型 | 说明 | 234 | ------------------- | ---------------------------- | 235 | Promise<void> | Promise对象。无返回值。 | 236 237**示例:** 238 239 ```js 240 fileio.access(path).then(function() { 241 console.info("access succeed"); 242 }).catch(function(err){ 243 console.info("access failed with error:"+ err); 244 }); 245 ``` 246 247 248## fileio.access 249 250access(path: string, mode: number, callback: AsyncCallback<void>): void 251 252检查当前进程是否可访问某文件,使用callback异步回调。 253 254**系统能力**:SystemCapability.FileManagement.File.FileIO 255 256**参数:** 257 258| 参数名 | 类型 | 必填 | 说明 | 259| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 260| path | string | 是 | 待访问文件的应用沙箱路径。 | 261| mode | number | 否 | 访问文件时的选项,可给定如下选项,以按位或的方式使用多个选项,默认给定0。<br/>确认当前进程是否具有对应权限:<br/>- 0:确认文件是否存在。<br/>- 1:确认当前进程是否具有可执行权限。<br/>- 2:确认当前进程是否具有写权限。<br/>- 4:确认当前进程是否具有读权限。 | 262| callback | AsyncCallback<void> | 是 | 异步检查当前进程是否可访问某文件之后的回调。 | 263 264**示例:** 265 266 ```js 267 fileio.access(path, function (err) { 268 // do something 269 }); 270 ``` 271 272 273## fileio.accessSync 274 275accessSync(path: string, mode?: number): void 276 277以同步方法检查当前进程是否可访问某文件。 278 279**系统能力**:SystemCapability.FileManagement.File.FileIO 280 281**参数:** 282 283| 参数名 | 类型 | 必填 | 说明 | 284| ------ | ------ | ---- | ------------------------------------------------------------ | 285| path | string | 是 | 待访问文件的应用沙箱路径。 | 286| mode | number | 否 | 访问文件时的选项,可给定如下选项,以按位或的方式使用多个选项,默认给定0。<br/>确认当前进程是否具有对应权限:<br/>- 0:确认文件是否存在。<br/>- 1:确认当前进程是否具有可执行权限。<br/>- 2:确认当前进程是否具有写权限。<br/>- 4:确认当前进程是否具有读权限。 | 287 288**示例:** 289 290 ```js 291 try { 292 fileio.accessSync(path); 293 } catch(err) { 294 console.info("accessSync failed with error:"+ err); 295 } 296 ``` 297 298 299## fileio.close<sup>7+</sup> 300 301close(fd: number):Promise<void> 302 303关闭文件,使用Promise异步回调。 304 305**系统能力**:SystemCapability.FileManagement.File.FileIO 306 307**参数:** 308 309 | 参数名 | 类型 | 必填 | 说明 | 310 | ---- | ------ | ---- | ------------ | 311 | fd | number | 是 | 待关闭文件的文件描述符。 | 312 313**返回值:** 314 315 | 类型 | 说明 | 316 | ------------------- | ---------------------------- | 317 | Promise<void> | Promise对象。无返回值。 | 318 319**示例:** 320 321 ```js 322 let fd = fileio.openSync(path); 323 fileio.close(fd).then(function(){ 324 console.info("close file succeed"); 325 }).catch(function(err){ 326 console.info("close file failed with error:"+ err); 327 }); 328 ``` 329 330 331## fileio.close<sup>7+</sup> 332 333close(fd: number, callback:AsyncCallback<void>): void 334 335关闭文件,使用callback异步回调。 336 337**系统能力**:SystemCapability.FileManagement.File.FileIO 338 339**参数:** 340 341 | 参数名 | 类型 | 必填 | 说明 | 342 | -------- | ------------------------- | ---- | ------------ | 343 | fd | number | 是 | 待关闭文件的文件描述符。 | 344 | callback | AsyncCallback<void> | 是 | 异步关闭文件之后的回调。 | 345 346**示例:** 347 348 ```js 349 let fd = fileio.openSync(path); 350 fileio.close(fd, function (err) { 351 // do something 352 }); 353 ``` 354 355 356## fileio.closeSync 357 358closeSync(fd: number): void 359 360以同步方法关闭文件。 361 362**系统能力**:SystemCapability.FileManagement.File.FileIO 363 364**参数:** 365 366 | 参数名 | 类型 | 必填 | 说明 | 367 | ---- | ------ | ---- | ------------ | 368 | fd | number | 是 | 待关闭文件的文件描述符。 | 369 370**示例:** 371 372 ```js 373 let fd = fileio.openSync(path); 374 fileio.closeSync(fd); 375 ``` 376 377 378## fileio.copyFile 379 380copyFile(src:string | number, dest:string | number, mode?:number):Promise<void> 381 382复制文件,使用Promise异步回调。 383 384**系统能力**:SystemCapability.FileManagement.File.FileIO 385 386**参数:** 387 388 | 参数名 | 类型 | 必填 | 说明 | 389 | ---- | -------------------------- | ---- | ---------------------------------------- | 390 | src | string \| number | 是 | 待复制文件的路径或待复制文件的描述符。 | 391 | dest | string \| number | 是 | 目标文件路径或目标文件描述符。 | 392 | mode | number | 否 | mode提供覆盖文件的选项,当前仅支持0,且默认为0。<br/>0:完全覆盖目标文件,未覆盖部分将被裁切掉。 | 393 394**返回值:** 395 396 | 类型 | 说明 | 397 | ------------------- | ---------------------------- | 398 | Promise<void> | Promise对象。无返回值。 | 399 400**示例:** 401 402 ```js 403 let src = path; 404 let dest = src + 'tgt'; 405 fileio.copyFile(src, dest).then(function(){ 406 console.info("copyFile succeed"); 407 }).catch(function(err){ 408 console.info("copyFile failed with error:"+ err); 409 }); 410 ``` 411 412 413## fileio.copyFile 414 415copyFile(src: string | number, dest: string | number, mode: number, callback: AsyncCallback<void>): void 416 417复制文件,使用callback异步回调。 418 419**系统能力**:SystemCapability.FileManagement.File.FileIO 420 421**参数:** 422 423 | 参数名 | 类型 | 必填 | 说明 | 424 | -------- | -------------------------- | ---- | ---------------------------------------- | 425 | src | string \| number | 是 | 待复制文件的路径或待复制文件的描述符。 | 426 | dest | string \| number | 是 | 目标文件路径或目标文件描述符。 | 427 | mode | number | 否 | mode提供覆盖文件的选项,当前仅支持0,且默认为0。<br/>0:完全覆盖目标文件,未覆盖部分将被裁切掉。 | 428 | callback | AsyncCallback<void> | 是 | 异步复制文件之后的回调。 | 429 430**示例:** 431 432 ```js 433 let src = path; 434 let dest = src + 'tgt'; 435 fileio.copyFile(src, dest, function (err) { 436 // do something 437 }); 438 ``` 439 440 441## fileio.copyFileSync 442 443copyFileSync(src: string | number, dest: string | number, mode?: number): void 444 445以同步方法复制文件。 446 447**系统能力**:SystemCapability.FileManagement.File.FileIO 448 449**参数:** 450 451 | 参数名 | 类型 | 必填 | 说明 | 452 | ---- | -------------------------- | ---- | ---------------------------------------- | 453 | src | string \| number | 是 | 待复制文件的路径或待复制文件的描述符。 | 454 | dest | string \| number | 是 | 目标文件路径或目标文件描述符。 | 455 | mode | number | 否 | mode提供覆盖文件的选项,当前仅支持0,且默认为0。<br/>0:完全覆盖目标文件,未覆盖部分将被裁切掉。 | 456 457**示例:** 458 459 ```js 460 let src = path; 461 let dest = src + 'tgt'; 462 fileio.copyFileSync(src, dest); 463 ``` 464 465 466## fileio.mkdir 467 468mkdir(path:string, mode?: number): Promise<void> 469 470创建目录,使用Promise异步回调。 471 472**系统能力**:SystemCapability.FileManagement.File.FileIO 473 474**参数:** 475 476| 参数名 | 类型 | 必填 | 说明 | 477| ------ | ------ | ---- | ------------------------------------------------------------ | 478| path | string | 是 | 待创建目录的应用沙箱路径。 | 479| mode | number | 否 | 创建目录的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o775。<br/>- 0o775:所有者具有读、写及可执行权限,其余用户具有读及可执行权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 480 481**返回值:** 482 483 | 类型 | 说明 | 484 | ------------------- | ---------------------------- | 485 | Promise<void> | Promise对象。无返回值。 | 486 487**示例:** 488 489 ```js 490 fileio.mkdir(path).then(function() { 491 console.info("mkdir succeed"); 492 }).catch(function (error){ 493 console.info("mkdir failed with error:"+ error); 494 }); 495 ``` 496 497 498## fileio.mkdir 499 500mkdir(path: string, mode: number, callback: AsyncCallback<void>): void 501 502创建目录,使用callback异步回调。 503 504**系统能力**:SystemCapability.FileManagement.File.FileIO 505 506**参数:** 507 508| 参数名 | 类型 | 必填 | 说明 | 509| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 510| path | string | 是 | 待创建目录的应用沙箱路径。 | 511| mode | number | 否 | 创建目录的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o775。<br/>- 0o775:所有者具有读、写及可执行权限,其余用户具有读及可执行权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 512| callback | AsyncCallback<void> | 是 | 异步创建目录操作完成之后的回调。 | 513 514**示例:** 515 516 ```js 517 fileio.mkdir(path, function(err) { 518 console.info("mkdir succeed"); 519 }); 520 ``` 521 522 523## fileio.mkdirSync 524 525mkdirSync(path: string, mode?: number): void 526 527以同步方法创建目录。 528 529**系统能力**:SystemCapability.FileManagement.File.FileIO 530 531**参数:** 532 533| 参数名 | 类型 | 必填 | 说明 | 534| ------ | ------ | ---- | ------------------------------------------------------------ | 535| path | string | 是 | 待创建目录的应用沙箱路径。 | 536| mode | number | 否 | 创建目录的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o775。<br/>- 0o775:所有者具有读、写及可执行权限,其余用户具有读及可执行权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 537 538**示例:** 539 540 ```js 541 fileio.mkdirSync(path); 542 ``` 543 544 545## fileio.open<sup>7+</sup> 546 547open(path: string, flags?: number, mode?: number): Promise<number> 548 549打开文件,使用Promise异步回调。 550 551**系统能力**:SystemCapability.FileManagement.File.FileIO 552 553**参数:** 554 555| 参数名 | 类型 | 必填 | 说明 | 556| ------ | ------ | ---- | ------------------------------------------------------------ | 557| path | string | 是 | 待打开文件的应用沙箱路径。 | 558| flags | number | 否 | 打开文件的选项,必须指定如下选项中的一个,默认以只读方式打开:<br/>- 0o0:只读打开。<br/>- 0o1:只写打开。<br/>- 0o2:读写打开。<br/>同时,也可给定如下选项,以按位或的方式追加,默认不给定任何额外选项:<br/>- 0o100:若文件不存在,则创建文件。使用该选项时必须指定第三个参数 mode。<br/>- 0o200:如果追加了0o100选项,且文件已经存在,则出错。<br/>- 0o1000:如果文件存在且以只写或读写的方式打开文件,则将其长度裁剪为零。<br/>- 0o2000:以追加方式打开,后续写将追加到文件末尾。<br/>- 0o4000:如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。<br/>- 0o200000:如果path不指向目录,则出错。<br/>- 0o400000:如果path指向符号链接,则出错。<br/>- 0o4010000:以同步IO的方式打开文件。 | 559| mode | number | 否 | 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o666。<br/>- 0o666:所有者具有读、写权限,所有用户组具有读、写权限,其余用户具有读、写权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 560 561**返回值:** 562 563 | 类型 | 说明 | 564 | --------------------- | ----------- | 565 | Promise<number> | Promise对象。返回打开文件的文件描述符。 | 566 567**示例:** 568 569 ```js 570 fileio.open(path, 0o1, 0o0200).then(function(number){ 571 console.info("open file succeed"); 572 }).catch(function(err){ 573 console.info("open file failed with error:"+ err); 574 }); 575 ``` 576 577 578## fileio.open<sup>7+</sup> 579 580open(path: string, flags: number, mode: number, callback: AsyncCallback<number>): void 581 582打开文件,使用callback异步回调。 583 584**系统能力**:SystemCapability.FileManagement.File.FileIO 585 586**参数:** 587 588| 参数名 | 类型 | 必填 | 说明 | 589| -------- | ------------------------------- | ---- | ------------------------------------------------------------ | 590| path | string | 是 | 待打开文件的应用沙箱路径。 | 591| flags | number | 是 | 打开文件的选项,必须指定如下选项中的一个,默认以只读方式打开:<br/>- 0o0:只读打开。<br/>- 0o1:只写打开。<br/>- 0o2:读写打开。<br/>同时,也可给定如下选项,以按位或的方式追加,默认不给定任何额外选项:<br/>- 0o100:若文件不存在,则创建文件。使用该选项时必须指定第三个参数 mode。<br/>- 0o200:如果追加了0o100选项,且文件已经存在,则出错。<br/>- 0o1000:如果文件存在且以只写或读写的方式打开文件,则将其长度裁剪为零。<br/>- 0o2000:以追加方式打开,后续写将追加到文件末尾。<br/>- 0o4000:如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。<br/>- 0o200000:如果path不指向目录,则出错。<br/>- 0o400000:如果path指向符号链接,则出错。<br/>- 0o4010000:以同步IO的方式打开文件。 | 592| mode | number | 是 | 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o666。<br/>- 0o666:所有者具有读、写权限,所有用户组具有读、写权限,其余用户具有读、写权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 593| callback | AsyncCallback <void> | 是 | 异步打开文件之后的回调。 | 594 595**示例:** 596 597 ```js 598 fileio.open(path, 0, function(err, fd) { 599 // do something 600 }); 601 ``` 602 603 604## fileio.openSync 605 606openSync(path:string, flags?:number, mode?:number): number 607 608以同步方法打开文件。 609 610**系统能力**:SystemCapability.FileManagement.File.FileIO 611 612**参数:** 613 614| 参数名 | 类型 | 必填 | 说明 | 615| ------ | ------ | ---- | ------------------------------------------------------------ | 616| path | string | 是 | 待打开文件的应用沙箱路径。 | 617| flags | number | 否 | 打开文件的选项,必须指定如下选项中的一个,默认以只读方式打开:<br/>- 0o0:只读打开。<br/>- 0o1:只写打开。<br/>- 0o2:读写打开。<br/>同时,也可给定如下选项,以按位或的方式追加,默认不给定任何额外选项:<br/>- 0o100:若文件不存在,则创建文件。使用该选项时必须指定第三个参数 mode。<br/>- 0o200:如果追加了0o100选项,且文件已经存在,则出错。<br/>- 0o1000:如果文件存在且以只写或读写的方式打开文件,则将其长度裁剪为零。<br/>- 0o2000:以追加方式打开,后续写将追加到文件末尾。<br/>- 0o4000:如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。<br/>- 0o200000:如果path不指向目录,则出错。<br/>- 0o400000:如果path指向符号链接,则出错。<br/>- 0o4010000:以同步IO的方式打开文件。 | 618| mode | number | 否 | 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限,默认给定0o666。<br/>- 0o666:所有者具有读、写权限,所有用户组具有读、写权限,其余用户具有读、写权限。<br/>- 0o640:所有者具有读、写权限,所有用户组具有读权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。<br/>创建出的文件权限受umask影响,umask随进程启动确定,其修改当前不开放。 | 619 620**返回值:** 621 622 | 类型 | 说明 | 623 | ------ | ----------- | 624 | number | 打开文件的文件描述符。 | 625 626**示例:** 627 628 ```js 629 let fd = fileio.openSync(path, 0o102, 0o640); 630 ``` 631 ```js 632 let fd = fileio.openSync(path, 0o102, 0o666); 633 fileio.writeSync(fd, 'hello world'); 634 let fd1 = fileio.openSync(path, 0o2002); 635 fileio.writeSync(fd1, 'hello world'); 636 let num = fileio.readSync(fd1, new ArrayBuffer(4096), {position: 0}); 637 console.info("num == " + num); 638 ``` 639 640 641## fileio.read 642 643read(fd: number, buffer: ArrayBuffer, options?: { 644 offset?: number; 645 length?: number; 646 position?: number; 647}): Promise<ReadOut> 648 649从文件读取数据,使用Promise异步回调。 650 651**系统能力**:SystemCapability.FileManagement.File.FileIO 652 653**参数:** 654 655| 参数名 | 类型 | 必填 | 说明 | 656| ------- | ----------- | ---- | ------------------------------------------------------------ | 657| fd | number | 是 | 待读取文件的文件描述符。 | 658| buffer | ArrayBuffer | 是 | 用于保存读取到的文件数据的缓冲区。 | 659| options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。<br/>约束:offset+length<=buffer.size。 | 660 661**返回值:** 662 663 | 类型 | 说明 | 664 | ---------------------------------- | ------ | 665 | Promise<[ReadOut](#readout)> | Promise对象。返回读取的结果。 | 666 667**示例:** 668 669 ```js 670 let fd = fileio.openSync(path, 0o2); 671 let buf = new ArrayBuffer(4096); 672 fileio.read(fd, buf).then(function(readOut){ 673 console.info("read file data succeed"); 674 console.log(String.fromCharCode.apply(null, new Uint8Array(readOut.buffer))); 675 }).catch(function(err){ 676 console.info("read file data failed with error:"+ err); 677 }); 678 ``` 679 680 681## fileio.read 682 683read(fd: number, buffer: ArrayBuffer, options: { 684 offset?: number; 685 length?: number; 686 position?: number; 687}, callback: AsyncCallback<ReadOut>): void 688 689从文件读取数据,使用callback异步回调。 690 691**系统能力**:SystemCapability.FileManagement.File.FileIO 692 693**参数:** 694 695 | 参数名 | 类型 | 必填 | 说明 | 696 | -------- | ---------------------------------------- | ---- | ---------------------------------------- | 697 | fd | number | 是 | 待读取文件的文件描述符。 | 698 | buffer | ArrayBuffer | 是 | 用于保存读取到的文件数据的缓冲区。 | 699 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。<br/>约束:offset+length<=buffer.size。 | 700 | callback | AsyncCallback<[ReadOut](#readout)> | 是 | 异步读取数据之后的回调。 | 701 702**示例:** 703 704 ```js 705 let fd = fileio.openSync(path, 0o2); 706 let buf = new ArrayBuffer(4096); 707 fileio.read(fd, buf, function (err, readOut) { 708 if (readOut) { 709 console.info("read file data succeed"); 710 console.log(String.fromCharCode.apply(null, new Uint8Array(readOut.buffer))); 711 } 712 }); 713 ``` 714 715 716## fileio.readSync 717 718readSync(fd: number, buffer: ArrayBuffer, options?: { 719 offset?: number; 720 length?: number; 721 position?: number; 722}): number 723 724以同步方法从文件读取数据。 725 726**系统能力**:SystemCapability.FileManagement.File.FileIO 727 728**参数:** 729 730 | 参数名 | 类型 | 必填 | 说明 | 731 | ------- | ----------- | ---- | ---------------------------------------- | 732 | fd | number | 是 | 待读取文件的文件描述符。 | 733 | buffer | ArrayBuffer | 是 | 用于保存读取到的文件数据的缓冲区。 | 734 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。<br/>约束:offset+length<=buffer.size。 | 735 736**返回值:** 737 738 | 类型 | 说明 | 739 | ------ | -------- | 740 | number | 实际读取的长度。 | 741 742**示例:** 743 744 ```js 745 let fd = fileio.openSync(path, 0o2); 746 let buf = new ArrayBuffer(4096); 747 let num = fileio.readSync(fd, buf); 748 ``` 749 750 751## fileio.rmdir<sup>7+</sup> 752 753rmdir(path: string): Promise<void> 754 755删除目录,使用Promise异步回调。 756 757**系统能力**:SystemCapability.FileManagement.File.FileIO 758 759**参数:** 760 761| 参数名 | 类型 | 必填 | 说明 | 762| ------ | ------ | ---- | -------------------------- | 763| path | string | 是 | 待删除目录的应用沙箱路径。 | 764 765**返回值:** 766 767 | 类型 | 说明 | 768 | ------------------- | ---------------------------- | 769 | Promise<void> | Promise对象。无返回值。 | 770 771**示例:** 772 773 ```js 774 fileio.rmdir(path).then(function() { 775 console.info("rmdir succeed"); 776 }).catch(function(err){ 777 console.info("rmdir failed with error:"+ err); 778 }); 779 ``` 780 781 782## fileio.rmdir<sup>7+</sup> 783 784rmdir(path: string, callback:AsyncCallback<void>): void 785 786删除目录,使用callback异步回调。 787 788**系统能力**:SystemCapability.FileManagement.File.FileIO 789 790**参数:** 791 792| 参数名 | 类型 | 必填 | 说明 | 793| -------- | ------------------------- | ---- | -------------------------- | 794| path | string | 是 | 待删除目录的应用沙箱路径。 | 795| callback | AsyncCallback<void> | 是 | 异步删除目录之后的回调。 | 796 797**示例:** 798 799 ```js 800 fileio.rmdir(path, function(err){ 801 // do something 802 console.info("rmdir succeed"); 803 }); 804 ``` 805 806 807## fileio.rmdirSync<sup>7+</sup> 808 809rmdirSync(path: string): void 810 811以同步方法删除目录。 812 813**系统能力**:SystemCapability.FileManagement.File.FileIO 814 815**参数:** 816 817| 参数名 | 类型 | 必填 | 说明 | 818| ------ | ------ | ---- | -------------------------- | 819| path | string | 是 | 待删除目录的应用沙箱路径。 | 820 821**示例:** 822 823 ```js 824 fileio.rmdirSync(path); 825 ``` 826 827 828## fileio.unlink 829 830unlink(path:string): Promise<void> 831 832删除文件,使用Promise异步回调。 833 834**系统能力**:SystemCapability.FileManagement.File.FileIO 835 836**参数:** 837 838| 参数名 | 类型 | 必填 | 说明 | 839| ------ | ------ | ---- | -------------------------- | 840| path | string | 是 | 待删除文件的应用沙箱路径。 | 841 842**返回值:** 843 844 | 类型 | 说明 | 845 | ------------------- | ---------------------------- | 846 | Promise<void> | Promise对象。无返回值。 | 847 848**示例:** 849 850 ```js 851 fileio.unlink(path).then(function(){ 852 console.info("remove file succeed"); 853 }).catch(function(error){ 854 console.info("remove file failed with error:"+ error); 855 }); 856 ``` 857 858 859## fileio.unlink 860 861unlink(path:string, callback:AsyncCallback<void>): void 862 863删除文件,使用callback异步回调。 864 865**系统能力**:SystemCapability.FileManagement.File.FileIO 866 867**参数:** 868 869| 参数名 | 类型 | 必填 | 说明 | 870| -------- | ------------------------- | ---- | -------------------------- | 871| path | string | 是 | 待删除文件的应用沙箱路径。 | 872| callback | AsyncCallback<void> | 是 | 异步删除文件之后的回调。 | 873 874**示例:** 875 876 ```js 877 fileio.unlink(path, function(err) { 878 console.info("remove file succeed"); 879 }); 880 ``` 881 882 883## fileio.unlinkSync 884 885unlinkSync(path: string): void 886 887以同步方法删除文件。 888 889**系统能力**:SystemCapability.FileManagement.File.FileIO 890 891**参数:** 892 893| 参数名 | 类型 | 必填 | 说明 | 894| ------ | ------ | ---- | -------------------------- | 895| path | string | 是 | 待删除文件的应用沙箱路径。 | 896 897**示例:** 898 899 ```js 900 fileio.unlinkSync(path); 901 ``` 902 903 904## fileio.write 905 906write(fd: number, buffer: ArrayBuffer | string, options?: { 907 offset?: number; 908 length?: number; 909 position?: number; 910 encoding?: string; 911}): Promise<number> 912 913将数据写入文件,使用Promise异步回调。 914 915**系统能力**:SystemCapability.FileManagement.File.FileIO 916 917**参数:** 918 919 | 参数名 | 类型 | 必填 | 说明 | 920 | ------- | ------------------------------- | ---- | ---------------------------------------- | 921 | fd | number | 是 | 待写入文件的文件描述符。 | 922 | buffer | ArrayBuffer \| string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | 923 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。<br/>约束:offset+length<=buffer.size。 | 924 925**返回值:** 926 927 | 类型 | 说明 | 928 | --------------------- | -------- | 929 | Promise<number> | Promise对象。返回实际写入的长度。 | 930 931**示例:** 932 933 ```js 934 let fd = fileio.openSync(path, 0o100 | 0o2, 0o666); 935 fileio.write(fd, "hello, world").then(function(number){ 936 console.info("write data to file succeed and size is:"+ number); 937 }).catch(function(err){ 938 console.info("write data to file failed with error:"+ err); 939 }); 940 ``` 941 942 943## fileio.write 944 945write(fd: number, buffer: ArrayBuffer | string, options: { 946 offset?: number; 947 length?: number; 948 position?: number; 949 encoding?: string; 950}, callback: AsyncCallback<number>): void 951 952将数据写入文件,使用callback异步回调。 953 954**系统能力**:SystemCapability.FileManagement.File.FileIO 955 956**参数:** 957 958 | 参数名 | 类型 | 必填 | 说明 | 959 | -------- | ------------------------------- | ---- | ---------------------------------------- | 960 | fd | number | 是 | 待写入文件的文件描述符。 | 961 | buffer | ArrayBuffer \| string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | 962 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。<br/>约束:offset+length<=buffer.size。 | 963 | callback | AsyncCallback<number> | 是 | 异步将数据写入完成后执行的回调函数。 | 964 965**示例:** 966 967 ```js 968 let fd = fileio.openSync(path, 0o100 | 0o2, 0o666); 969 fileio.write(fd, "hello, world", function (err, bytesWritten) { 970 if (bytesWritten) { 971 console.info("write data to file succeed and size is:"+ bytesWritten); 972 } 973 }); 974 ``` 975 976 977## fileio.writeSync 978 979writeSync(fd: number, buffer: ArrayBuffer | string, options?: { 980 offset?: number; 981 length?: number; 982 position?: number; 983 encoding?: string; 984}): number 985 986以同步方法将数据写入文件。 987 988**系统能力**:SystemCapability.FileManagement.File.FileIO 989 990**参数:** 991 992 | 参数名 | 类型 | 必填 | 说明 | 993 | ------- | ------------------------------- | ---- | ---------------------------------------- | 994 | fd | number | 是 | 待写入文件的文件描述符。 | 995 | buffer | ArrayBuffer \| string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | 996 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。<br/>约束:offset+length<=buffer.size。 | 997 998**返回值:** 999 1000 | 类型 | 说明 | 1001 | ------ | -------- | 1002 | number | 实际写入的长度。 | 1003 1004**示例:** 1005 1006 ```js 1007 let fd = fileio.openSync(path, 0o100 | 0o2, 0o666); 1008 let num = fileio.writeSync(fd, "hello, world"); 1009 ``` 1010 1011 1012## fileio.hash 1013 1014hash(path: string, algorithm: string): Promise<string> 1015 1016计算文件的哈希值,使用Promise异步回调。 1017 1018**系统能力**:SystemCapability.FileManagement.File.FileIO 1019 1020**参数:** 1021 1022| 参数名 | 类型 | 必填 | 说明 | 1023| --------- | ------ | ---- | ------------------------------------------------------------ | 1024| path | string | 是 | 待计算哈希值文件的应用沙箱路径。 | 1025| algorithm | string | 是 | 哈希计算采用的算法。可选 "md5"、"sha1" 或 "sha256"。建议采用安全强度更高的 "sha256"。 | 1026 1027**返回值:** 1028 1029 | 类型 | 说明 | 1030 | --------------------- | -------------------------- | 1031 | Promise<string> | Promise对象。返回文件的哈希值。表示为十六进制数字串,所有字母均大写。 | 1032 1033**示例:** 1034 1035 ```js 1036 fileio.hash(path, "sha256").then(function(str){ 1037 console.info("calculate file hash succeed:"+ str); 1038 }).catch(function(err){ 1039 console.info("calculate file hash failed with error:"+ err); 1040 }); 1041 ``` 1042 1043 1044## fileio.hash 1045 1046hash(path: string, algorithm: string, callback: AsyncCallback<string>): void 1047 1048计算文件的哈希值,使用callback异步回调。 1049 1050**系统能力**:SystemCapability.FileManagement.File.FileIO 1051 1052**参数:** 1053 1054| 参数名 | 类型 | 必填 | 说明 | 1055| --------- | --------------------------- | ---- | ------------------------------------------------------------ | 1056| path | string | 是 | 待计算哈希值文件的应用沙箱路径。 | 1057| algorithm | string | 是 | 哈希计算采用的算法。可选 "md5"、"sha1" 或 "sha256"。建议采用安全强度更高的 "sha256"。 | 1058| callback | AsyncCallback<string> | 是 | 异步计算文件哈希操作之后的回调函数(其中给定文件哈希值表示为十六进制数字串,所有字母均大写)。 | 1059 1060**示例:** 1061 1062 ```js 1063 fileio.hash(path, "sha256", function(err, hashStr) { 1064 if (hashStr) { 1065 console.info("calculate file hash succeed:"+ hashStr); 1066 } 1067 }); 1068 ``` 1069 1070 1071## fileio.chmod<sup>7+</sup> 1072 1073chmod(path: string, mode: number):Promise<void> 1074 1075改变文件权限,使用Promise异步回调。 1076 1077**系统能力**:SystemCapability.FileManagement.File.FileIO 1078 1079**参数:** 1080 1081| 参数名 | 类型 | 必填 | 说明 | 1082| ------ | ------ | ---- | ------------------------------------------------------------ | 1083| path | string | 是 | 所需变更权限的文件的应用沙箱路径。 | 1084| mode | number | 是 | 改变文件权限,可给定如下权限,以按位或的方式追加权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 1085 1086**返回值:** 1087 1088 | 类型 | 说明 | 1089 | ------------------- | ---------------------------- | 1090 | Promise<void> | Promise对象。无返回值。 | 1091 1092**示例:** 1093 1094 ```js 1095 fileio.chmod(path, 0o700).then(function() { 1096 console.info("chmod succeed"); 1097 }).catch(function(err){ 1098 console.info("chmod failed with error:"+ err); 1099 }); 1100 ``` 1101 1102 1103## fileio.chmod<sup>7+</sup> 1104 1105chmod(path: string, mode: number, callback: AsyncCallback<void>): void 1106 1107改变文件权限,使用callback异步回调。 1108 1109**系统能力**:SystemCapability.FileManagement.File.FileIO 1110 1111**参数:** 1112 1113| 参数名 | 类型 | 必填 | 说明 | 1114| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 1115| path | string | 是 | 所需变更权限的文件的应用沙箱路径。 | 1116| mode | number | 是 | 改变文件权限,可给定如下权限,以按位或的方式追加权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 1117| callback | AsyncCallback<void> | 是 | 异步改变文件权限之后的回调。 | 1118 1119**示例:** 1120 1121 ```js 1122 fileio.chmod(path, 0o700, function (err) { 1123 // do something 1124 }); 1125 ``` 1126 1127 1128## fileio.chmodSync<sup>7+</sup> 1129 1130chmodSync(path: string, mode: number): void 1131 1132以同步方法改变文件权限。 1133 1134**系统能力**:SystemCapability.FileManagement.File.FileIO 1135 1136**参数:** 1137 1138| 参数名 | 类型 | 必填 | 说明 | 1139| ------ | ------ | ---- | ------------------------------------------------------------ | 1140| path | string | 是 | 所需变更权限的文件的应用沙箱路径。 | 1141| mode | number | 是 | 改变文件权限,可给定如下权限,以按位或的方式追加权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 1142 1143**示例:** 1144 1145 ```js 1146 fileio.chmodSync(path, 0o700); 1147 ``` 1148 1149 1150## fileio.fstat<sup>7+</sup> 1151 1152fstat(fd: number): Promise<Stat> 1153 1154基于文件描述符获取文件状态信息,使用Promise异步回调。 1155 1156**系统能力**:SystemCapability.FileManagement.File.FileIO 1157 1158**参数:** 1159 1160 | 参数名 | 类型 | 必填 | 说明 | 1161 | ---- | ------ | ---- | ------------ | 1162 | fd | number | 是 | 待获取文件状态的文件描述符。 | 1163 1164**返回值:** 1165 1166 | 类型 | 说明 | 1167 | ---------------------------- | ---------- | 1168 | Promise<[Stat](#stat)> | Promise对象。返回表示文件状态的具体信息。 | 1169 1170**示例:** 1171 1172 ```js 1173 let fd = fileio.openSync(path); 1174 fileio.fstat(fd).then(function(stat){ 1175 console.info("fstat succeed:"+ JSON.stringify(stat)); 1176 }).catch(function(err){ 1177 console.info("fstat failed with error:"+ err); 1178 }); 1179 ``` 1180 1181 1182## fileio.fstat<sup>7+</sup> 1183 1184fstat(fd: number, callback: AsyncCallback<Stat>): void 1185 1186基于文件描述符获取文件状态信息,使用callback异步回调。 1187 1188**系统能力**:SystemCapability.FileManagement.File.FileIO 1189 1190**参数:** 1191 1192 | 参数名 | 类型 | 必填 | 说明 | 1193 | -------- | ---------------------------------- | ---- | ---------------- | 1194 | fd | number | 是 | 待获取文件状态的文件描述符。 | 1195 | callback | AsyncCallback<[Stat](#stat)> | 是 | 异步获取文件状态信息之后的回调。 | 1196 1197**示例:** 1198 1199 ```js 1200 let fd = fileio.openSync(path); 1201 fileio.fstat(fd, function (err) { 1202 // do something 1203 }); 1204 ``` 1205 1206 1207## fileio.fstatSync<sup>7+</sup> 1208 1209fstatSync(fd: number): Stat 1210 1211以同步方法基于文件描述符获取文件状态信息。 1212 1213**系统能力**:SystemCapability.FileManagement.File.FileIO 1214 1215**参数:** 1216 1217 | 参数名 | 类型 | 必填 | 说明 | 1218 | ---- | ------ | ---- | ------------ | 1219 | fd | number | 是 | 待获取文件状态的文件描述符。 | 1220 1221**返回值:** 1222 1223 | 类型 | 说明 | 1224 | ------------- | ---------- | 1225 | [Stat](#stat) | 表示文件状态的具体信息。 | 1226 1227**示例:** 1228 1229 ```js 1230 let fd = fileio.openSync(path); 1231 let stat = fileio.fstatSync(fd); 1232 ``` 1233 1234 1235## fileio.ftruncate<sup>7+</sup> 1236 1237ftruncate(fd: number, len?: number): Promise<void> 1238 1239基于文件描述符截断文件,使用Promise异步回调。 1240 1241**系统能力**:SystemCapability.FileManagement.File.FileIO 1242 1243**参数:** 1244 1245 | 参数名 | 类型 | 必填 | 说明 | 1246 | ---- | ------ | ---- | ---------------- | 1247 | fd | number | 是 | 待截断文件的文件描述符。 | 1248 | len | number | 否 | 文件截断后的长度,以字节为单位。 | 1249 1250**返回值:** 1251 1252 | 类型 | 说明 | 1253 | ------------------- | ---------------------------- | 1254 | Promise<void> | Promise对象。无返回值。| 1255 1256**示例:** 1257 1258 ```js 1259 let fd = fileio.openSync(path); 1260 fileio.ftruncate(fd, 5).then(function(err) { 1261 console.info("truncate file succeed"); 1262 }).catch(function(err){ 1263 console.info("truncate file failed with error:"+ err); 1264 }); 1265 ``` 1266 1267 1268## fileio.ftruncate<sup>7+</sup> 1269 1270ftruncate(fd: number, len: number, callback:AsyncCallback<void>): void 1271 1272基于文件描述符截断文件,使用callback异步回调。 1273 1274**系统能力**:SystemCapability.FileManagement.File.FileIO 1275 1276**参数:** 1277 1278 | 参数名 | 类型 | 必填 | 说明 | 1279 | -------- | ------------------------- | ---- | ---------------- | 1280 | fd | number | 是 | 待截断文件的文件描述符。 | 1281 | len | number | 是 | 文件截断后的长度,以字节为单位。 | 1282 | callback | AsyncCallback<void> | 是 | 回调函数,本调用无返回值。 | 1283 1284**示例:** 1285 1286 ```js 1287 let fd = fileio.openSync(path); 1288 let len = 5; 1289 fileio.ftruncate(fd, 5, function(err){ 1290 // do something 1291 }); 1292 ``` 1293 1294 1295## fileio.ftruncateSync<sup>7+</sup> 1296 1297ftruncateSync(fd: number, len?: number): void 1298 1299以同步方法基于文件描述符截断文件。 1300 1301**系统能力**:SystemCapability.FileManagement.File.FileIO 1302 1303**参数:** 1304 1305 | 参数名 | 类型 | 必填 | 说明 | 1306 | ---- | ------ | ---- | ---------------- | 1307 | fd | number | 是 | 待截断文件的文件描述符。 | 1308 | len | number | 否 | 文件截断后的长度,以字节为单位。 | 1309 1310**示例:** 1311 1312 ```js 1313 let fd = fileio.openSync(path); 1314 let len = 5; 1315 fileio.ftruncateSync(fd, len); 1316 ``` 1317 1318 1319## fileio.truncate<sup>7+</sup> 1320 1321truncate(path: string, len?: number): Promise<void> 1322 1323基于文件路径截断文件,使用Promise异步回调。 1324 1325**系统能力**:SystemCapability.FileManagement.File.FileIO 1326 1327**参数:** 1328 1329| 参数名 | 类型 | 必填 | 说明 | 1330| ------ | ------ | ---- | -------------------------------- | 1331| path | string | 是 | 待截断文件的应用沙箱路径。 | 1332| len | number | 否 | 文件截断后的长度,以字节为单位。 | 1333 1334**返回值:** 1335 1336 | 类型 | 说明 | 1337 | ------------------- | ---------------------------- | 1338 | Promise<void> | Promise对象。无返回值。 | 1339 1340**示例:** 1341 1342 ```js 1343 let len = 5; 1344 fileio.truncate(path, len).then(function(){ 1345 console.info("truncate file succeed"); 1346 }).catch(function(err){ 1347 console.info("truncate file failed with error:"+ err); 1348 }); 1349 ``` 1350 1351 1352## fileio.truncate<sup>7+</sup> 1353 1354truncate(path: string, len: number, callback:AsyncCallback<void>): void 1355 1356基于文件路径截断文件,使用callback异步回调。 1357 1358**系统能力**:SystemCapability.FileManagement.File.FileIO 1359 1360**参数:** 1361 1362| 参数名 | 类型 | 必填 | 说明 | 1363| -------- | ------------------------- | ---- | -------------------------------- | 1364| path | string | 是 | 待截断文件的应用沙箱路径。 | 1365| len | number | 是 | 文件截断后的长度,以字节为单位。 | 1366| callback | AsyncCallback<void> | 是 | 回调函数,本调用无返回值。 | 1367 1368**示例:** 1369 1370 ```js 1371 let len = 5; 1372 fileio.truncate(path, len, function(err){ 1373 // do something 1374 }); 1375 ``` 1376 1377 1378## fileio.truncateSync<sup>7+</sup> 1379 1380truncateSync(path: string, len?: number): void 1381 1382以同步方法基于文件路径截断文件。 1383 1384**系统能力**:SystemCapability.FileManagement.File.FileIO 1385 1386**参数:** 1387 1388| 参数名 | 类型 | 必填 | 说明 | 1389| ------ | ------ | ---- | -------------------------------- | 1390| path | string | 是 | 待截断文件的应用沙箱路径。 | 1391| len | number | 否 | 文件截断后的长度,以字节为单位。 | 1392 1393**示例:** 1394 1395 ```js 1396 let len = 5; 1397 fileio.truncateSync(path, len); 1398 ``` 1399 1400 1401## fileio.readText<sup>7+</sup> 1402 1403readText(filePath: string, options?: { 1404 position?: number; 1405 length?: number; 1406 encoding?: string; 1407}): Promise<string> 1408 1409基于文本方式读取文件(即直接读取文件的文本内容),使用Promise异步回调。 1410 1411**系统能力**:SystemCapability.FileManagement.File.FileIO 1412 1413**参数:** 1414 1415| 参数名 | 类型 | 必填 | 说明 | 1416| -------- | ------ | ---- | ------------------------------------------------------------ | 1417| filePath | string | 是 | 待读取文件的应用沙箱路径。 | 1418| options | Object | 否 | 支持如下选项:<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读取。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- encoding,string类型,当数据是 string 类型时有效,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。 | 1419 1420**返回值:** 1421 1422 | 类型 | 说明 | 1423 | --------------------- | ---------- | 1424 | Promise<string> | Promise对象。返回读取文件的内容。 | 1425 1426**示例:** 1427 1428 ```js 1429 fileio.readText(path).then(function(str) { 1430 console.info("readText succeed:"+ str); 1431 }).catch(function(err){ 1432 console.info("readText failed with error:"+ err); 1433 }); 1434 ``` 1435 1436 1437## fileio.readText<sup>7+</sup> 1438 1439readText(filePath: string, options: { 1440 position?: number; 1441 length?: number; 1442 encoding?: string; 1443}, callback: AsyncCallback<string>): void 1444 1445基于文本方式读取文件(即直接读取文件的文本内容),使用callback异步回调。 1446 1447**系统能力**:SystemCapability.FileManagement.File.FileIO 1448 1449**参数:** 1450 1451| 参数名 | 类型 | 必填 | 说明 | 1452| -------- | --------------------------- | ---- | ------------------------------------------------------------ | 1453| filePath | string | 是 | 待读取文件的应用沙箱路径。 | 1454| options | Object | 是 | 支持如下选项:<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读取。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- encoding,string类型,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。 | 1455| callback | AsyncCallback<string> | 是 | 回调函数,返回读取文件的内容。 | 1456 1457**示例:** 1458 1459 ```js 1460 fileio.readText(path, { position: 1, encoding: 'UTF-8' }, function(err, str){ 1461 // do something 1462 }); 1463 ``` 1464 1465 1466## fileio.readTextSync<sup>7+</sup> 1467 1468readTextSync(filePath: string, options?: { 1469 position?: number; 1470 length?: number; 1471 encoding?: string; 1472}): string 1473 1474以同步方法基于文本方式读取文件(即直接读取文件的文本内容)。 1475 1476**系统能力**:SystemCapability.FileManagement.File.FileIO 1477 1478**参数:** 1479 1480| 参数名 | 类型 | 必填 | 说明 | 1481| -------- | ------ | ---- | ------------------------------------------------------------ | 1482| filePath | string | 是 | 待读取文件的应用沙箱路径。 | 1483| options | Object | 否 | 支持如下选项:<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读取。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- encoding,string类型,当数据是 string 类型时有效,表示数据的编码方式,默认 'utf-8',仅支持 'utf-8'。 | 1484 1485**返回值:** 1486 1487 | 类型 | 说明 | 1488 | ------ | -------------------- | 1489 | string | 返回读取文件的内容。 | 1490 1491**示例:** 1492 1493 ```js 1494 let str = fileio.readTextSync(path, {position: 1, length: 3}); 1495 ``` 1496 1497 1498## fileio.lstat<sup>7+</sup> 1499 1500lstat(path: string): Promise<Stat> 1501 1502获取链接信息,使用Promise异步回调。 1503 1504**系统能力**:SystemCapability.FileManagement.File.FileIO 1505 1506**参数:** 1507 1508| 参数名 | 类型 | 必填 | 说明 | 1509| ------ | ------ | ---- | -------------------------------------- | 1510| path | string | 是 | 目标文件的应用沙箱路径。 | 1511 1512**返回值:** 1513 1514 | 类型 | 说明 | 1515 | ---------------------------- | ---------- | 1516 | Promise<[Stat](#stat)> | promise对象,返回文件对象,表示文件的具体信息,详情见stat。 | 1517 1518**示例:** 1519 1520 ```js 1521 fileio.lstat(path).then(function(stat){ 1522 console.info("get link status succeed:"+ JSON.stringify(stat)); 1523 }).catch(function(err){ 1524 console.info("get link status failed with error:"+ err); 1525 }); 1526 ``` 1527 1528 1529## fileio.lstat<sup>7+</sup> 1530 1531lstat(path:string, callback:AsyncCallback<Stat>): void 1532 1533获取链接信息,使用callback异步回调。 1534 1535**系统能力**:SystemCapability.FileManagement.File.FileIO 1536 1537**参数:** 1538 1539| 参数名 | 类型 | 必填 | 说明 | 1540| -------- | ---------------------------------- | ---- | -------------------------------------- | 1541| path | string | 是 | 目标文件的应用沙箱路径。 | 1542| callback | AsyncCallback<[Stat](#stat)> | 是 | 回调函数,返回文件的具体信息。 | 1543 1544**示例:** 1545 1546 ```js 1547 fileio.lstat(path, function (err, stat) { 1548 // do something 1549 }); 1550 ``` 1551 1552 1553## fileio.lstatSync<sup>7+</sup> 1554 1555lstatSync(path:string): Stat 1556 1557以同步方法获取链接信息。 1558 1559**系统能力**:SystemCapability.FileManagement.File.FileIO 1560 1561**参数:** 1562 1563| 参数名 | 类型 | 必填 | 说明 | 1564| ------ | ------ | ---- | -------------------------------------- | 1565| path | string | 是 | 目标文件的应用沙箱路径。 | 1566 1567**返回值:** 1568 1569 | 类型 | 说明 | 1570 | ------------- | ---------- | 1571 | [Stat](#stat) | 表示文件的具体信息。 | 1572 1573**示例:** 1574 1575 ```js 1576 let stat = fileio.lstatSync(path); 1577 ``` 1578 1579 1580## fileio.rename<sup>7+</sup> 1581 1582rename(oldPath: string, newPath: string): Promise<void> 1583 1584重命名文件,使用Promise异步回调。 1585 1586**系统能力**:SystemCapability.FileManagement.File.FileIO 1587 1588**参数:** 1589 1590| 参数名 | 类型 | 必填 | 说明 | 1591| ------- | ------ | ---- | ---------------------------- | 1592| oldPath | string | 是 | 目标文件的当前应用沙箱路径。 | 1593| newPath | String | 是 | 目标文件的新应用沙箱路径。 | 1594 1595**返回值:** 1596 1597 | 类型 | 说明 | 1598 | ------------------- | ---------------------------- | 1599 | Promise<void> | Promise对象。无返回值。 | 1600 1601**示例:** 1602 1603 ```js 1604 let oldPath = path; 1605 let newPath = oldPath + '123'; 1606 fileio.rename(oldPath, newPath).then(function() { 1607 console.info("rename succeed"); 1608 }).catch(function(err){ 1609 console.info("rename failed with error:"+ err); 1610 }); 1611 ``` 1612 1613 1614## fileio.rename<sup>7+</sup> 1615 1616rename(oldPath: string, newPath: string, callback: AsyncCallback<void>): void 1617 1618重命名文件,使用callback异步回调。 1619 1620**系统能力**:SystemCapability.FileManagement.File.FileIO 1621 1622**参数:** 1623 1624| 参数名 | 类型 | 必填 | 说明 | 1625| -------- | ------------------------- | ---- | ---------------------------- | 1626| oldPath | string | 是 | 目标文件的当前应用沙箱路径。 | 1627| newPath | String | 是 | 目标文件的新应用沙箱路径。 | 1628| Callback | AsyncCallback<void> | 是 | 异步重命名文件之后的回调。 | 1629 1630**示例:** 1631 1632 ```js 1633 let oldPath = path; 1634 let newPath = oldPath + '123'; 1635 fileio.rename(oldPath, newPath, function(err){ 1636 }); 1637 ``` 1638 1639 1640## fileio.renameSync<sup>7+</sup> 1641 1642renameSync(oldPath: string, newPath: string): void 1643 1644以同步方法重命名文件。 1645 1646**系统能力**:SystemCapability.FileManagement.File.FileIO 1647 1648**参数:** 1649 1650| 参数名 | 类型 | 必填 | 说明 | 1651| ------- | ------ | ---- | ---------------------------- | 1652| oldPath | string | 是 | 目标文件的当前应用沙箱路径。 | 1653| newPath | String | 是 | 目标文件的新应用沙箱路径。 | 1654 1655**示例:** 1656 1657 ```js 1658 let oldPath = path; 1659 let newPath = oldPath + '123'; 1660 fileio.renameSync(oldPath, newPath); 1661 ``` 1662 1663 1664## fileio.fsync<sup>7+</sup> 1665 1666fsync(fd: number): Promise<void> 1667 1668同步文件数据,使用Promise异步回调。 1669 1670**系统能力**:SystemCapability.FileManagement.File.FileIO 1671 1672**参数:** 1673 1674 | 参数名 | 类型 | 必填 | 说明 | 1675 | ---- | ------ | ---- | ------------ | 1676 | fd | number | 是 | 待同步文件的文件描述符。 | 1677 1678**返回值:** 1679 1680 | 类型 | 说明 | 1681 | ------------------- | ---------------------------- | 1682 | Promise<void> | Promise对象。无返回值。 | 1683 1684**示例:** 1685 1686 ```js 1687 let fd = fileio.openSync(path); 1688 fileio.fsync(fd).then(function(){ 1689 console.info("sync data succeed"); 1690 }).catch(function(err){ 1691 console.info("sync data failed with error:"+ err); 1692 }); 1693 ``` 1694 1695 1696## fileio.fsync<sup>7+</sup> 1697 1698fsync(fd: number, callback: AsyncCallback<void>): void 1699 1700同步文件数据,使用callback异步回调。 1701 1702**系统能力**:SystemCapability.FileManagement.File.FileIO 1703 1704**参数:** 1705 1706 | 参数名 | 类型 | 必填 | 说明 | 1707 | -------- | ------------------------- | ---- | --------------- | 1708 | fd | number | 是 | 待同步文件的文件描述符。 | 1709 | Callback | AsyncCallback<void> | 是 | 异步将文件数据同步之后的回调。 | 1710 1711**示例:** 1712 1713 ```js 1714 let fd = fileio.openSync(path); 1715 fileio.fsync(fd, function(err){ 1716 // do something 1717 }); 1718 ``` 1719 1720 1721## fileio.fsyncSync<sup>7+</sup> 1722 1723fsyncSync(fd: number): void 1724 1725以同步方法同步文件数据。 1726 1727**系统能力**:SystemCapability.FileManagement.File.FileIO 1728 1729**参数:** 1730 1731 | 参数名 | 类型 | 必填 | 说明 | 1732 | ---- | ------ | ---- | ------------ | 1733 | fd | number | 是 | 待同步文件的文件描述符。 | 1734 1735**示例:** 1736 1737 ```js 1738 let fd = fileio.openSync(path); 1739 fileio.fsyncSync(fd); 1740 ``` 1741 1742 1743## fileio.fdatasync<sup>7+</sup> 1744 1745fdatasync(fd: number): Promise<void> 1746 1747实现文件内容数据同步,使用Promise异步回调。 1748 1749**系统能力**:SystemCapability.FileManagement.File.FileIO 1750 1751**参数:** 1752 1753 | 参数名 | 类型 | 必填 | 说明 | 1754 | ---- | ------ | ---- | ------------ | 1755 | fd | number | 是 | 待同步文件的文件描述符。 | 1756 1757**返回值:** 1758 1759 | 类型 | 说明 | 1760 | ------------------- | ---------------------------- | 1761 | Promise<void> | Promise对象。无返回值。 | 1762 1763**示例:** 1764 1765 ```js 1766 let fd = fileio.openSync(path); 1767 fileio.fdatasync(fd).then(function(err) { 1768 console.info("sync data succeed"); 1769 }).catch(function(err){ 1770 console.info("sync data failed with error:"+ err); 1771 }); 1772 ``` 1773 1774 1775## fileio.fdatasync<sup>7+</sup> 1776 1777fdatasync(fd: number, callback:AsyncCallback<void>): void 1778 1779实现文件内容数据同步,使用callback异步回调。 1780 1781**系统能力**:SystemCapability.FileManagement.File.FileIO 1782 1783**参数:** 1784 1785 | 参数名 | 类型 | 必填 | 说明 | 1786 | -------- | ------------------------------- | ---- | ----------------- | 1787 | fd | number | 是 | 待同步文件的文件描述符。 | 1788 | callback | AsyncCallback <void> | 是 | 异步将文件内容数据同步之后的回调。 | 1789 1790**示例:** 1791 1792 ```js 1793 let fd = fileio.openSync(path); 1794 fileio.fdatasync (fd, function (err) { 1795 // do something 1796 }); 1797 ``` 1798 1799 1800## fileio.fdatasyncSync<sup>7+</sup> 1801 1802fdatasyncSync(fd: number): void 1803 1804以同步方法实现文件内容数据同步。 1805 1806**系统能力**:SystemCapability.FileManagement.File.FileIO 1807 1808**参数:** 1809 1810 | 参数名 | 类型 | 必填 | 说明 | 1811 | ---- | ------ | ---- | ------------ | 1812 | fd | number | 是 | 待同步文件的文件描述符。 | 1813 1814**示例:** 1815 1816 ```js 1817 let fd = fileio.openSync(path); 1818 let stat = fileio.fdatasyncSync(fd); 1819 ``` 1820 1821 1822## fileio.symlink<sup>7+</sup> 1823 1824symlink(target: string, srcPath: string): Promise<void> 1825 1826基于文件路径创建符号链接,使用Promise异步回调。 1827 1828**系统能力**:SystemCapability.FileManagement.File.FileIO 1829 1830**参数:** 1831 1832| 参数名 | 类型 | 必填 | 说明 | 1833| ------- | ------ | ---- | ---------------------------- | 1834| target | string | 是 | 目标文件的应用沙箱路径。 | 1835| srcPath | string | 是 | 符号链接文件的应用沙箱路径。 | 1836 1837**返回值:** 1838 1839 | 类型 | 说明 | 1840 | ------------------- | ---------------------------- | 1841 | Promise<void> | Promise对象。无返回值。 | 1842 1843**示例:** 1844 1845 ```js 1846 let target = path; 1847 let srcPath = target + 'aaa'; 1848 fileio.symlink(target, srcPath).then(function() { 1849 console.info("symlink succeed"); 1850 }).catch(function(err){ 1851 console.info("symlink failed with error:"+ err); 1852 }); 1853 ``` 1854 1855 1856## fileio.symlink<sup>7+</sup> 1857 1858symlink(target: string, srcPath: string, callback: AsyncCallback<void>): void 1859 1860基于文件路径创建符号链接,使用callback异步回调。 1861 1862**系统能力**:SystemCapability.FileManagement.File.FileIO 1863 1864**参数:** 1865 1866| 参数名 | 类型 | 必填 | 说明 | 1867| -------- | ------------------------- | ---- | -------------------------------- | 1868| target | string | 是 | 目标文件的应用沙箱路径。 | 1869| srcPath | string | 是 | 符号链接文件的应用沙箱路径。 | 1870| callback | AsyncCallback<void> | 是 | 异步创建符号链接信息之后的回调。 | 1871 1872**示例:** 1873 1874 ```js 1875 let target = path; 1876 let srcPath = target + 'aaa'; 1877 fileio.symlink(target, srcPath, function (err) { 1878 // do something 1879 }); 1880 ``` 1881 1882 1883## fileio.symlinkSync<sup>7+</sup> 1884 1885symlinkSync(target: string, srcPath: string): void 1886 1887以同步的方法基于文件路径创建符号链接。 1888 1889**系统能力**:SystemCapability.FileManagement.File.FileIO 1890 1891**参数:** 1892 1893| 参数名 | 类型 | 必填 | 说明 | 1894| ------- | ------ | ---- | ---------------------------- | 1895| target | string | 是 | 目标文件的应用沙箱路径。 | 1896| srcPath | string | 是 | 符号链接文件的应用沙箱路径。 | 1897 1898**示例:** 1899 1900 ```js 1901 let target = path; 1902 let srcPath = target + 'aaa'; 1903 fileio.symlinkSync(target, srcPath); 1904 ``` 1905 1906 1907## fileio.chown<sup>7+</sup> 1908 1909chown(path: string, uid: number, gid: number): Promise<void> 1910 1911基于文件路径改变文件所有者,使用Promise异步回调。 1912 1913**系统能力**:SystemCapability.FileManagement.File.FileIO 1914 1915**参数:** 1916 1917| 参数名 | 类型 | 必填 | 说明 | 1918| ------ | ------ | ---- | -------------------------- | 1919| path | string | 是 | 待改变文件的应用沙箱路径。 | 1920| uid | number | 是 | 新的UID(UserID)。 | 1921| gid | number | 是 | 新的GID(GroupID)。 | 1922 1923**返回值:** 1924 1925 | 类型 | 说明 | 1926 | ------------------- | ---------------------------- | 1927 | Promise<void> | Promise对象。无返回值。 | 1928 1929**示例:** 1930 1931 ```js 1932 let stat = fileio.statSync(path); 1933 fileio.chown(path, stat.uid, stat.gid).then(function(){ 1934 console.info("chown succeed"); 1935 }).catch(function(err){ 1936 console.info("chown failed with error:"+ err); 1937 }); 1938 ``` 1939 1940 1941## fileio.chown<sup>7+</sup> 1942 1943chown(path: string, uid: number, gid: number, callback: AsyncCallback<void>): void 1944 1945基于文件路径改变文件所有者,使用callback异步回调。 1946 1947**系统能力**:SystemCapability.FileManagement.File.FileIO 1948 1949**参数:** 1950 1951| 参数名 | 类型 | 必填 | 说明 | 1952| -------- | ------------------------- | ---- | ------------------------------ | 1953| path | string | 是 | 待改变文件的应用沙箱路径。 | 1954| uid | number | 是 | 新的UID。 | 1955| gid | number | 是 | 新的GID。 | 1956| callback | AsyncCallback<void> | 是 | 异步改变文件所有者之后的回调。 | 1957 1958**示例:** 1959 1960 ```js 1961 let stat = fileio.statSync(path) 1962 fileio.chown(path, stat.uid, stat.gid, function (err){ 1963 // do something 1964 }); 1965 ``` 1966 1967 1968## fileio.chownSync<sup>7+</sup> 1969 1970chownSync(path: string, uid: number, gid: number): void 1971 1972以同步的方法基于文件路径改变文件所有者。 1973 1974**系统能力**:SystemCapability.FileManagement.File.FileIO 1975 1976**参数:** 1977 1978| 参数名 | 类型 | 必填 | 说明 | 1979| ------ | ------ | ---- | -------------------------- | 1980| path | string | 是 | 待改变文件的应用沙箱路径。 | 1981| uid | number | 是 | 新的UID。 | 1982| gid | number | 是 | 新的GID。 | 1983 1984**示例:** 1985 1986 ```js 1987 let stat = fileio.statSync(path) 1988 fileio.chownSync(path, stat.uid, stat.gid); 1989 ``` 1990 1991 1992## fileio.mkdtemp<sup>7+</sup> 1993 1994mkdtemp(prefix: string): Promise<string> 1995 1996创建临时目录,使用Promise异步回调。 1997 1998**系统能力**:SystemCapability.FileManagement.File.FileIO 1999 2000**参数:** 2001 2002 | 参数名 | 类型 | 必填 | 说明 | 2003 | ------ | ------ | ---- | --------------------------- | 2004 | prefix | string | 是 | 用随机产生的字符串替换以“XXXXXX”结尾目录路径。 | 2005 2006**返回值:** 2007 2008 | 类型 | 说明 | 2009 | --------------------- | ---------- | 2010 | Promise<string> | Promise对象。返回生成的唯一目录路径。 | 2011 2012**示例:** 2013 2014 ```js 2015 fileio.mkdtemp(path + "XXXX").then(function(path){ 2016 console.info("mkdtemp succeed:"+ path); 2017 }).catch(function(err){ 2018 console.info("mkdtemp failed with error:"+ err); 2019 }); 2020 ``` 2021 2022 2023## fileio.mkdtemp<sup>7+</sup> 2024 2025mkdtemp(prefix: string, callback: AsyncCallback<string>): void 2026 2027创建临时目录,使用callback异步回调。 2028 2029**系统能力**:SystemCapability.FileManagement.File.FileIO 2030 2031**参数:** 2032 2033 | 参数名 | 类型 | 必填 | 说明 | 2034 | -------- | --------------------------- | ---- | --------------------------- | 2035 | prefix | string | 是 | 用随机产生的字符串替换以“XXXXXX”结尾目录路径。 | 2036 | callback | AsyncCallback<string> | 是 | 异步创建临时目录之后的回调。 | 2037 2038**示例:** 2039 2040 ```js 2041 fileio.mkdtemp(path + "XXXX", function (err, res) { 2042 // do something 2043 }); 2044 ``` 2045 2046 2047## fileio.mkdtempSync<sup>7+</sup> 2048 2049mkdtempSync(prefix: string): string 2050 2051以同步的方法创建临时目录。 2052 2053**系统能力**:SystemCapability.FileManagement.File.FileIO 2054 2055**参数:** 2056 2057 | 参数名 | 类型 | 必填 | 说明 | 2058 | ------ | ------ | ---- | --------------------------- | 2059 | prefix | string | 是 | 用随机产生的字符串替换以“XXXXXX”结尾目录路径。 | 2060 2061**返回值:** 2062 2063 | 类型 | 说明 | 2064 | ------ | ---------- | 2065 | string | 产生的唯一目录路径。 | 2066 2067**示例:** 2068 2069 ```js 2070 let res = fileio.mkdtempSync(path + "XXXX"); 2071 ``` 2072 2073 2074## fileio.fchmod<sup>7+</sup> 2075 2076fchmod(fd: number, mode: number): Promise<void> 2077 2078基于文件描述符改变文件权限,使用Promise异步回调。 2079 2080**系统能力**:SystemCapability.FileManagement.File.FileIO 2081 2082**参数:** 2083 2084 | 参数名 | 类型 | 必填 | 说明 | 2085 | ---- | ------ | ---- | ---------------------------------------- | 2086 | fd | number | 是 | 待改变文件的文件描述符。 | 2087 | mode | number | 是 | 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 2088 2089**返回值:** 2090 2091 | 类型 | 说明 | 2092 | ------------------- | ---------------------------- | 2093 | Promise<void> | Promise对象。无返回值。 | 2094 2095**示例:** 2096 2097 ```js 2098 let fd = fileio.openSync(path); 2099 let mode = 0o700; 2100 fileio.fchmod(fd, mode).then(function() { 2101 console.info("chmod succeed"); 2102 }).catch(function(err){ 2103 console.info("chmod failed with error:"+ err); 2104 }); 2105 ``` 2106 2107 2108## fileio.fchmod<sup>7+</sup> 2109 2110fchmod(fd: number, mode: number, callback: AsyncCallback<void>): void 2111 2112基于文件描述符改变文件权限,使用callback异步回调。 2113 2114**系统能力**:SystemCapability.FileManagement.File.FileIO 2115 2116**参数:** 2117 2118 | 参数名 | 类型 | 必填 | 说明 | 2119 | -------- | ------------------------------- | ---- | ---------------------------------------- | 2120 | fd | number | 是 | 待改变文件的文件描述符。 | 2121 | mode | number | 是 | 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 2122 | callback | AsyncCallback <void> | 是 | 异步改变文件权限之后的回调。 | 2123 2124**示例:** 2125 2126 ```js 2127 let fd = fileio.openSync(path); 2128 let mode = 0o700; 2129 fileio.fchmod(fd, mode, function (err) { 2130 // do something 2131 }); 2132 ``` 2133 2134 2135## fileio.fchmodSync<sup>7+</sup> 2136 2137fchmodSync(fd: number, mode: number): void 2138 2139以同步方法基于文件描述符改变文件权限。 2140 2141**系统能力**:SystemCapability.FileManagement.File.FileIO 2142 2143**参数:** 2144 2145 | 参数名 | 类型 | 必填 | 说明 | 2146 | ---- | ------ | ---- | ---------------------------------------- | 2147 | fd | number | 是 | 待改变文件的文件描述符。 | 2148 | mode | number | 是 | 若创建文件,则指定文件的权限,可给定如下权限,以按位或的方式追加权限。<br/>- 0o700:所有者具有读、写及可执行权限。<br/>- 0o400:所有者具有读权限。<br/>- 0o200:所有者具有写权限。<br/>- 0o100:所有者具有可执行权限。<br/>- 0o070:所有用户组具有读、写及可执行权限。<br/>- 0o040:所有用户组具有读权限。<br/>- 0o020:所有用户组具有写权限。<br/>- 0o010:所有用户组具有可执行权限。<br/>- 0o007:其余用户具有读、写及可执行权限。<br/>- 0o004:其余用户具有读权限。<br/>- 0o002:其余用户具有写权限。<br/>- 0o001:其余用户具有可执行权限。 | 2149 2150**示例:** 2151 2152 ```js 2153 let fd = fileio.openSync(path); 2154 let mode = 0o700; 2155 fileio.fchmodSync(fd, mode); 2156 ``` 2157 2158 2159## fileio.createStream<sup>7+</sup> 2160 2161createStream(path: string, mode: string): Promise<Stream> 2162 2163基于文件路径打开文件流,使用Promise异步回调。 2164 2165**系统能力**:SystemCapability.FileManagement.File.FileIO 2166 2167**参数:** 2168 2169| 参数名 | 类型 | 必填 | 说明 | 2170| ------ | ------ | ---- | ------------------------------------------------------------ | 2171| path | string | 是 | 待打开文件的应用沙箱路径。 | 2172| mode | string | 是 | - r:打开只读文件,该文件必须存在。<br/>- r+:打开可读写的文件,该文件必须存在。<br/>- w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。<br/>- a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 | 2173 2174**返回值:** 2175 2176 | 类型 | 说明 | 2177 | --------------------------------- | --------- | 2178 | Promise<[Stream](#stream7)> | Promise对象。返回文件流的结果。 | 2179 2180**示例:** 2181 2182 ```js 2183 fileio.createStream(path, "r+").then(function(stream){ 2184 console.info("createStream succeed"); 2185 }).catch(function(err){ 2186 console.info("createStream failed with error:"+ err); 2187 }); 2188 ``` 2189 2190 2191## fileio.createStream<sup>7+</sup> 2192 2193createStream(path: string, mode: string, callback: AsyncCallback<Stream>): void 2194 2195基于文件路径打开文件流,使用callback异步回调。 2196 2197**系统能力**:SystemCapability.FileManagement.File.FileIO 2198 2199**参数:** 2200 2201| 参数名 | 类型 | 必填 | 说明 | 2202| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ | 2203| path | string | 是 | 待打开文件的应用沙箱路径。 | 2204| mode | string | 是 | - r:打开只读文件,该文件必须存在。<br/>- r+:打开可读写的文件,该文件必须存在。<br/>- w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。<br/>- a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 | 2205| callback | AsyncCallback<[Stream](#stream7)> | 是 | 异步打开文件流之后的回调。 | 2206 2207**示例:** 2208 2209 ```js 2210 fileio.createStream(path, "r+", function(err, stream){ 2211 // do something 2212 }); 2213 ``` 2214 2215 2216## fileio.createStreamSync<sup>7+</sup> 2217 2218createStreamSync(path: string, mode: string): Stream 2219 2220以同步方法基于文件路径打开文件流。 2221 2222**系统能力**:SystemCapability.FileManagement.File.FileIO 2223 2224**参数:** 2225 2226| 参数名 | 类型 | 必填 | 说明 | 2227| ------ | ------ | ---- | ------------------------------------------------------------ | 2228| path | string | 是 | 待打开文件的应用沙箱路径。 | 2229| mode | string | 是 | - r:打开只读文件,该文件必须存在。<br/>- r+:打开可读写的文件,该文件必须存在。<br/>- w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。<br/>- a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 | 2230 2231**返回值:** 2232 2233 | 类型 | 说明 | 2234 | ------------------ | --------- | 2235 | [Stream](#stream7) | 返回文件流的结果。 | 2236 2237**示例:** 2238 2239 ```js 2240 let ss = fileio.createStreamSync(path, "r+"); 2241 ``` 2242 2243 2244## fileio.fdopenStream<sup>7+</sup> 2245 2246fdopenStream(fd: number, mode: string): Promise<Stream> 2247 2248基于文件描述符打开文件流,使用Promise异步回调。 2249 2250**系统能力**:SystemCapability.FileManagement.File.FileIO 2251 2252**参数:** 2253 2254 | 参数名 | 类型 | 必填 | 说明 | 2255 | ---- | ------ | ---- | ---------------------------------------- | 2256 | fd | number | 是 | 待打开文件的文件描述符。 | 2257 | mode | string | 是 | - r:打开只读文件,该文件必须存在。<br/>- r+:打开可读写的文件,该文件必须存在。<br/>- w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。<br/>- a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 | 2258 2259**返回值:** 2260 2261 | 类型 | 说明 | 2262 | --------------------------------- | --------- | 2263 | Promise<[Stream](#stream7)> | Promise对象。返回文件流的结果。 | 2264 2265**示例:** 2266 2267 ```js 2268 let fd = fileio.openSync(path); 2269 fileio.fdopenStream(fd, "r+").then(function(stream){ 2270 console.info("openStream succeed"); 2271 }).catch(function(err){ 2272 console.info("openStream failed with error:"+ err); 2273 }); 2274 ``` 2275 2276 2277## fileio.fdopenStream<sup>7+</sup> 2278 2279fdopenStream(fd: number, mode: string, callback: AsyncCallback<Stream>): void 2280 2281基于文件描述符打开文件流,使用callback异步回调。 2282 2283**系统能力**:SystemCapability.FileManagement.File.FileIO 2284 2285**参数:** 2286 2287 | 参数名 | 类型 | 必填 | 说明 | 2288 | -------- | ---------------------------------------- | ---- | ---------------------------------------- | 2289 | fd | number | 是 | 待打开文件的文件描述符。 | 2290 | mode | string | 是 | - r:打开只读文件,该文件必须存在。<br/>- r+:打开可读写的文件,该文件必须存在。<br/>- w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。<br/>- a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 | 2291 | callback | AsyncCallback <[Stream](#stream7)> | 是 | 异步打开文件流之后的回调。 | 2292 2293**示例:** 2294 2295 ```js 2296 let fd = fileio.openSync(path); 2297 fileio.fdopenStream(fd, "r+", function (err, stream) { 2298 // do something 2299 }); 2300 ``` 2301 2302 2303## fileio.fdopenStreamSync<sup>7+</sup> 2304 2305fdopenStreamSync(fd: number, mode: string): Stream 2306 2307以同步方法基于文件描述符打开文件流。 2308 2309**系统能力**:SystemCapability.FileManagement.File.FileIO 2310 2311**参数:** 2312 2313 | 参数名 | 类型 | 必填 | 说明 | 2314 | ---- | ------ | ---- | ---------------------------------------- | 2315 | fd | number | 是 | 待打开文件的文件描述符。 | 2316 | mode | string | 是 | - r:打开只读文件,该文件必须存在。<br/>- r+:打开可读写的文件,该文件必须存在。<br/>- w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失。若文件不存在则建立该文件。<br/>- a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。<br/>- a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 | 2317 2318**返回值:** 2319 2320 | 类型 | 说明 | 2321 | ------------------ | --------- | 2322 | [Stream](#stream7) | 返回文件流的结果。 | 2323 2324**示例:** 2325 2326 ```js 2327 let fd = fileio.openSync(path); 2328 let ss = fileio.fdopenStreamSync(fd, "r+"); 2329 ``` 2330 2331 2332## fileio.fchown<sup>7+</sup> 2333 2334fchown(fd: number, uid: number, gid: number): Promise<void> 2335 2336基于文件描述符改变文件所有者,使用Promise异步回调。 2337 2338**系统能力**:SystemCapability.FileManagement.File.FileIO 2339 2340**参数:** 2341 2342 | 参数名 | 类型 | 必填 | 说明 | 2343 | ---- | ------ | ---- | ------------ | 2344 | fd | number | 是 | 待改变文件的文件描述符。 | 2345 | uid | number | 是 | 文件所有者的UID。 | 2346 | gid | number | 是 | 文件所有组的GID。 | 2347 2348**返回值:** 2349 2350 | 类型 | 说明 | 2351 | ------------------- | ---------------------------- | 2352 | Promise<void> | Promise对象。无返回值。 | 2353 2354**示例:** 2355 2356 ```js 2357 let fd = fileio.openSync(path); 2358 let stat = fileio.statSync(path); 2359 fileio.fchown(fd, stat.uid, stat.gid).then(function() { 2360 console.info("chown succeed"); 2361 }).catch(function(err){ 2362 console.info("chown failed with error:"+ err); 2363 }); 2364 ``` 2365 2366 2367## fileio.fchown<sup>7+</sup> 2368 2369fchown(fd: number, uid: number, gid: number, callback: AsyncCallback<void>): void 2370 2371基于文件描述符改变文件所有者,使用callback异步回调。 2372 2373**系统能力**:SystemCapability.FileManagement.File.FileIO 2374 2375**参数:** 2376 2377 | 参数名 | 类型 | 必填 | 说明 | 2378 | -------- | ------------------------- | ---- | --------------- | 2379 | fd | number | 是 | 待改变文件的文件描述符。 | 2380 | uid | number | 是 | 文件所有者的UID。 | 2381 | gid | number | 是 | 文件所有组的GID。 | 2382 | callback | AsyncCallback<void> | 是 | 异步改变文件所有者之后的回调。 | 2383 2384**示例:** 2385 2386 ```js 2387 let fd = fileio.openSync(path); 2388 let stat = fileio.statSync(path); 2389 fileio.fchown(fd, stat.uid, stat.gid, function (err){ 2390 // do something 2391 }); 2392 ``` 2393 2394 2395## fileio.fchownSync<sup>7+</sup> 2396 2397fchownSync(fd: number, uid: number, gid: number): void 2398 2399以同步方法基于文件描述符改变文件所有者。 2400 2401**系统能力**:SystemCapability.FileManagement.File.FileIO 2402 2403**参数:** 2404 2405 | 参数名 | 类型 | 必填 | 说明 | 2406 | ---- | ------ | ---- | ------------ | 2407 | fd | number | 是 | 待改变文件的文件描述符。 | 2408 | uid | number | 是 | 文件所有者的UID。 | 2409 | gid | number | 是 | 文件所有组的GID。 | 2410 2411**示例:** 2412 2413 ```js 2414 let fd = fileio.openSync(path); 2415 let stat = fileio.statSync(path); 2416 fileio.fchownSync(fd, stat.uid, stat.gid); 2417 ``` 2418 2419 2420## fileio.lchown<sup>7+</sup> 2421 2422lchown(path: string, uid: number, gid: number): Promise<void> 2423 2424基于文件路径改变文件所有者,更改符号链接本身的所有者,而不是符号链接所指向的实际文件,使用Promise异步回调。 2425 2426**系统能力**:SystemCapability.FileManagement.File.FileIO 2427 2428**参数:** 2429 2430| 参数名 | 类型 | 必填 | 说明 | 2431| ------ | ------ | ---- | -------------------------- | 2432| path | string | 是 | 待打开文件的应用沙箱路径。 | 2433| uid | number | 是 | 新的UID。 | 2434| gid | number | 是 | 新的GID。 | 2435 2436**返回值:** 2437 2438 | 类型 | 说明 | 2439 | ------------------- | ---------------------------- | 2440 | Promise<void> | Promise对象。无返回值。 | 2441 2442**示例:** 2443 2444 ```js 2445 let stat = fileio.statSync(path); 2446 fileio.lchown(path, stat.uid, stat.gid).then(function() { 2447 console.info("chown succeed"); 2448 }).catch(function(err){ 2449 console.info("chown failed with error:"+ err); 2450 }); 2451 ``` 2452 2453 2454## fileio.lchown<sup>7+</sup> 2455 2456lchown(path: string, uid: number, gid: number, callback: AsyncCallback<void>): void 2457 2458基于文件路径改变文件所有者,更改符号链接本身的所有者,而不是更改符号链接所指向的实际文件,使用callback异步回调。 2459 2460**系统能力**:SystemCapability.FileManagement.File.FileIO 2461 2462**参数:** 2463 2464| 参数名 | 类型 | 必填 | 说明 | 2465| -------- | ------------------------- | ---- | ------------------------------ | 2466| path | string | 是 | 待打开文件的应用沙箱路径。 | 2467| uid | number | 是 | 新的UID。 | 2468| gid | number | 是 | 新的GID。 | 2469| callback | AsyncCallback<void> | 是 | 异步改变文件所有者之后的回调。 | 2470 2471**示例:** 2472 2473 ```js 2474 let stat = fileio.statSync(path); 2475 fileio.lchown(path, stat.uid, stat.gid, function (err){ 2476 // do something 2477 }); 2478 ``` 2479 2480 2481## fileio.lchownSync<sup>7+</sup> 2482 2483lchownSync(path: string, uid: number, gid: number): void 2484 2485以同步方法基于文件路径改变文件所有者,更改符号链接本身的所有者,而不是更改符号链接所指向的实际文件。 2486 2487**系统能力**:SystemCapability.FileManagement.File.FileIO 2488 2489**参数:** 2490 2491| 参数名 | 类型 | 必填 | 说明 | 2492| ------ | ------ | ---- | -------------------------- | 2493| path | string | 是 | 待打开文件的应用沙箱路径。 | 2494| uid | number | 是 | 新的UID。 | 2495| gid | number | 是 | 新的GID。 | 2496 2497**示例:** 2498 2499 ```js 2500 let stat = fileio.statSync(path); 2501 fileio.lchownSync(path, stat.uid, stat.gid); 2502 ``` 2503 2504 2505## fileio.createWatcher<sup>7+</sup> 2506 2507createWatcher(filename: string, events: number, callback: AsyncCallback<number>): Watcher 2508 2509监听文件或者目录的变化,使用callback异步回调。 2510 2511**系统能力**:SystemCapability.FileManagement.File.FileIO 2512 2513**参数:** 2514 2515| 参数名 | 类型 | 必填 | 说明 | 2516| -------- | --------------------------------- | ---- | ------------------------------------------------------------ | 2517| filename | string | 是 | 待监视文件的应用沙箱路径。 | 2518| events | Number | 是 | - 1: 监听文件或者目录是否发生重命名。<br/>- 2:监听文件或者目录内容的是否修改。<br/>- 3:两者都有。 | 2519| callback | AsyncCallback<number > | 是 | 每发生变化一次,调用一次此函数。 | 2520 2521**返回值:** 2522 2523 | 类型 | 说明 | 2524 | -------------------- | ---------- | 2525 | [Watcher](#watcher7) | Promise对象。返回文件变化监听的实例。 | 2526 2527**示例:** 2528 2529 ```js 2530 let filename = path +"/test.txt"; 2531 fileio.createWatcher(filename, 1, function(number){ 2532 console.info("Monitoring times: "+number); 2533 }); 2534 2535 ``` 2536 2537 2538## Readout 2539 2540仅用于read方法,获取文件的读取结果。 2541 2542**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.File.FileIO。 2543 2544| 名称 | 参数类型 | 可读 | 可写 | 说明 | 2545| --------- | ---------- | ---- | ---- | ----------------- | 2546| bytesRead | number | 是 | 是 | 实际读取长度。 | 2547| offset | number | 是 | 是 | 读取数据相对于缓冲区首地址的偏移。 | 2548| buffer | ArrayBufer | 是 | 是 | 保存读取数据的缓冲区。 | 2549 2550 2551## Stat 2552 2553文件具体信息,在调用Stat的方法前,需要先通过[stat()](#fileiostat)方法(同步或异步)来构建一个Stat实例。 2554 2555**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.File.FileIO。 2556 2557### 属性 2558 2559| 名称 | 参数类型 | 可读 | 可写 | 说明 | 2560| ------ | ------ | ---- | ---- | ---------------------------------------- | 2561| dev | number | 是 | 否 | 标识包含该文件的主设备号。 | 2562| ino | number | 是 | 否 | 标识该文件。通常同设备上的不同文件的INO不同。 | 2563| mode | number | 是 | 否 | 表示文件类型及权限,其首 4 位表示文件类型,后 12 位表示权限。各特征位的含义如下:<br/>- 0o170000:可用于获取文件类型的掩码。<br/>- 0o140000:文件是套接字。<br/>- 0o120000:文件是符号链接。<br/>- 0o100000:文件是一般文件。<br/>- 0o060000:文件属于块设备。<br/>- 0o040000:文件是目录。<br/>- 0o020000:文件是字符设备。<br/>- 0o010000:文件是具名管道,即FIFO。<br/>- 0o0700:可用于获取用户权限的掩码。<br/>- 0o0400:用户读,对于普通文件,所有者可读取文件;对于目录,所有者可读取目录项。<br/>- 0o0200:用户写,对于普通文件,所有者可写入文件;对于目录,所有者可创建/删除目录项。<br/>- 0o0100:用户执行,对于普通文件,所有者可执行文件;对于目录,所有者可在目录中搜索给定路径名。<br/>- 0o0070:可用于获取用户组权限的掩码。<br/>- 0o0040:用户组读,对于普通文件,所有用户组可读取文件;对于目录,所有用户组可读取目录项。<br/>- 0o0020:用户组写,对于普通文件,所有用户组可写入文件;对于目录,所有用户组可创建/删除目录项。<br/>- 0o0010:用户组执行,对于普通文件,所有用户组可执行文件;对于目录,所有用户组是否可在目录中搜索给定路径名。<br/>- 0o0007:可用于获取其他用户权限的掩码。<br/>- 0o0004:其他读,对于普通文件,其余用户可读取文件;对于目录,其他用户组可读取目录项。<br/>- 0o0002:其他写,对于普通文件,其余用户可写入文件;对于目录,其他用户组可创建/删除目录项。<br/>- 0o0001:其他执行,对于普通文件,其余用户可执行文件;对于目录,其他用户组可在目录中搜索给定路径名。 | 2564| nlink | number | 是 | 否 | 文件的硬链接数。 | 2565| uid | number | 是 | 否 | 文件所有者的ID。 | 2566| gid | number | 是 | 否 | 文件所有组的ID。 | 2567| rdev | number | 是 | 否 | 标识包含该文件的从设备号。 | 2568| size | number | 是 | 否 | 文件的大小,以字节为单位。仅对普通文件有效。 | 2569| blocks | number | 是 | 否 | 文件占用的块数,计算时块大小按512B计算。 | 2570| atime | number | 是 | 否 | 上次访问该文件的时间,表示距1970年1月1日0时0分0秒的秒数。 | 2571| mtime | number | 是 | 否 | 上次修改该文件的时间,表示距1970年1月1日0时0分0秒的秒数。 | 2572| ctime | number | 是 | 否 | 最近改变文件状态的时间,表示距1970年1月1日0时0分0秒的秒数。 | 2573 2574 2575### isBlockDevice 2576 2577isBlockDevice(): boolean 2578 2579用于判断文件是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。 2580 2581**系统能力**:SystemCapability.FileManagement.File.FileIO 2582 2583**返回值:** 2584 2585 | 类型 | 说明 | 2586 | ------- | ---------------- | 2587 | boolean | 表示文件是否是块特殊设备。 | 2588 2589**示例:** 2590 2591 ```js 2592 let isBLockDevice = fileio.statSync(path).isBlockDevice(); 2593 ``` 2594 2595 2596### isCharacterDevice 2597 2598isCharacterDevice(): boolean 2599 2600用于判断文件是否是字符特殊文件。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。 2601 2602**系统能力**:SystemCapability.FileManagement.File.FileIO 2603 2604**返回值:** 2605 2606 | 类型 | 说明 | 2607 | ------- | ----------------- | 2608 | boolean | 表示文件是否是字符特殊设备。 | 2609 2610**示例:** 2611 2612 ```js 2613 let isCharacterDevice = fileio.statSync(path).isCharacterDevice(); 2614 ``` 2615 2616 2617### isDirectory 2618 2619isDirectory(): boolean 2620 2621用于判断文件是否是目录。 2622 2623**系统能力**:SystemCapability.FileManagement.File.FileIO 2624 2625**返回值:** 2626 2627 | 类型 | 说明 | 2628 | ------- | ------------- | 2629 | boolean | 表示文件是否是目录。 | 2630 2631**示例:** 2632 2633 ```js 2634 let isDirectory = fileio.statSync(path).isDirectory(); 2635 ``` 2636 2637 2638### isFIFO 2639 2640isFIFO(): boolean 2641 2642用于判断文件是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。 2643 2644**系统能力**:SystemCapability.FileManagement.File.FileIO 2645 2646**返回值:** 2647 2648 | 类型 | 说明 | 2649 | ------- | --------------------- | 2650 | boolean | 表示文件是否是 FIFO。 | 2651 2652**示例:** 2653 2654 ```js 2655 let isFIFO = fileio.statSync(path).isFIFO(); 2656 ``` 2657 2658 2659### isFile 2660 2661isFile(): boolean 2662 2663用于判断文件是否是普通文件。 2664 2665**系统能力**:SystemCapability.FileManagement.File.FileIO 2666 2667**返回值:** 2668 2669 | 类型 | 说明 | 2670 | ------- | --------------- | 2671 | boolean | 表示文件是否是普通文件。 | 2672 2673**示例:** 2674 2675 ```js 2676 let isFile = fileio.statSync(path).isFile(); 2677 ``` 2678 2679 2680### isSocket 2681 2682isSocket(): boolean 2683 2684用于判断文件是否是套接字。 2685 2686**系统能力**:SystemCapability.FileManagement.File.FileIO 2687 2688**返回值:** 2689 2690 | 类型 | 说明 | 2691 | ------- | -------------- | 2692 | boolean | 表示文件是否是套接字。 | 2693 2694**示例:** 2695 2696 ```js 2697 let isSocket = fileio.statSync(path).isSocket(); 2698 ``` 2699 2700 2701### isSymbolicLink 2702 2703isSymbolicLink(): boolean 2704 2705用于判断文件是否是符号链接。 2706 2707**系统能力**:SystemCapability.FileManagement.File.FileIO 2708 2709**返回值:** 2710 2711 | 类型 | 说明 | 2712 | ------- | --------------- | 2713 | boolean | 表示文件是否是符号链接。 | 2714 2715**示例:** 2716 2717 ```js 2718 let isSymbolicLink = fileio.statSync(path).isSymbolicLink(); 2719 ``` 2720 2721 2722## Watcher<sup>7+</sup> 2723 2724Watcher是文件变化监听的实例,调用Watcher.stop()方法(同步或异步)来停止文件监听。 2725 2726 2727### stop<sup>7+</sup> 2728 2729stop(): Promise<void> 2730 2731关闭watcher监听,使用Promise异步回调。 2732 2733**系统能力**:SystemCapability.FileManagement.File.FileIO 2734 2735**示例:** 2736 2737 ```js 2738 let filename = path +"/test.txt"; 2739 let watcher = fileio.createWatcher(filename, 1, function(number){ 2740 console.info("Monitoring times: "+number); 2741 }); 2742 watcher.stop().then(function(){ 2743 console.info("close watcher succeed"); 2744 }); 2745 ``` 2746 2747 2748### stop<sup>7+</sup> 2749 2750stop(callback: AsyncCallback<void>): void 2751 2752关闭watcher监听,使用callback异步回调。 2753 2754**系统能力**:SystemCapability.FileManagement.File.FileIO 2755 2756**参数:** 2757 2758 | 参数名 | 类型 | 必填 | 说明 | 2759 | -------- | ------------------------- | ---- | ---------------------- | 2760 | callback | AsyncCallback<void> | 是 | 以异步方法关闭watcher监听之后的回调。 | 2761 2762**示例:** 2763 2764 ```js 2765 let filename = path +"/test.txt"; 2766 let watcher = fileio.createWatcher(filename, 1, function(number){ 2767 console.info("Monitoring times: "+number); 2768 }); 2769 watcher.stop(function(){ 2770 console.info("close watcher succeed"); 2771 }) 2772 ``` 2773 2774 2775## Stream 2776 2777文件流,在调用Stream的方法前,需要先通过createStream()方法(同步或异步)来构建一个Stream实例。 2778 2779 2780### close<sup>7+</sup> 2781 2782close(): Promise<void> 2783 2784关闭文件流,使用Promise异步回调。 2785 2786**系统能力**:SystemCapability.FileManagement.File.FileIO 2787 2788**返回值:** 2789 2790 | 类型 | 说明 | 2791 | ------------------- | ------------- | 2792 | Promise<void> | Promise对象。返回表示异步关闭文件流的结果。 | 2793 2794**示例:** 2795 2796 ```js 2797 let ss= fileio.createStreamSync(path, "r+"); 2798 ss.close().then(function(){ 2799 console.info("close fileStream succeed"); 2800 }).catch(function(err){ 2801 console.info("close fileStream failed with error:"+ err); 2802 }); 2803 ``` 2804 2805 2806### close<sup>7+</sup> 2807 2808close(callback: AsyncCallback<void>): void 2809 2810异步关闭文件流,使用callback异步回调。 2811 2812**系统能力**:SystemCapability.FileManagement.File.FileIO 2813 2814**参数:** 2815 2816 | 参数名 | 类型 | 必填 | 说明 | 2817 | -------- | ------------------------- | ---- | ------------- | 2818 | callback | AsyncCallback<void> | 是 | 异步关闭文件流之后的回调。 | 2819 2820**示例:** 2821 2822 ```js 2823 let ss= fileio.createStreamSync(path, "r+"); 2824 ss.close(function (err) { 2825 // do something 2826 }); 2827 ``` 2828 2829 2830### closeSync 2831 2832closeSync(): void 2833 2834同步关闭文件流。 2835 2836**系统能力**:SystemCapability.FileManagement.File.FileIO 2837 2838**示例:** 2839 2840 ```js 2841 let ss= fileio.createStreamSync(path, "r+"); 2842 ss.closeSync(); 2843 ``` 2844 2845 2846### flush<sup>7+</sup> 2847 2848flush(): Promise<void> 2849 2850刷新文件流,使用Promise异步回调。 2851 2852**系统能力**:SystemCapability.FileManagement.File.FileIO 2853 2854**返回值:** 2855 2856 | 类型 | 说明 | 2857 | ------------------- | ------------- | 2858 | Promise<void> | Promise对象。返回表示异步刷新文件流的结果。 | 2859 2860**示例:** 2861 2862 ```js 2863 let ss= fileio.createStreamSync(path, "r+"); 2864 ss.flush().then(function (){ 2865 console.info("flush succeed"); 2866 }).catch(function(err){ 2867 console.info("flush failed with error:"+ err); 2868 }); 2869 ``` 2870 2871 2872### flush<sup>7+</sup> 2873 2874flush(callback: AsyncCallback<void>): void 2875 2876异步刷新文件流,使用callback异步回调。 2877 2878**系统能力**:SystemCapability.FileManagement.File.FileIO 2879 2880**参数:** 2881 2882 | 参数名 | 类型 | 必填 | 说明 | 2883 | -------- | ------------------------- | ---- | -------------- | 2884 | callback | AsyncCallback<void> | 是 | 异步刷新文件流后的回调函数。 | 2885 2886**示例:** 2887 2888 ```js 2889 let ss= fileio.createStreamSync(path, "r+"); 2890 ss.flush(function (err) { 2891 // do something 2892 }); 2893 ``` 2894 2895 2896### flushSync<sup>7+</sup> 2897 2898flushSync(): void 2899 2900同步刷新文件流。 2901 2902**系统能力**:SystemCapability.FileManagement.File.FileIO 2903 2904**示例:** 2905 2906 ```js 2907 let ss= fileio.createStreamSync(path, "r+"); 2908 ss.flushSync(); 2909 ``` 2910 2911 2912### write<sup>7+</sup> 2913 2914write(buffer: ArrayBuffer | string, options?: { 2915 offset?: number; 2916 length?: number; 2917 position?: number; 2918 encoding?: string; 2919}): Promise<number> 2920 2921将数据写入流文件,使用Promise异步回调。 2922 2923**系统能力**:SystemCapability.FileManagement.File.FileIO 2924 2925**参数:** 2926 2927 | 参数名 | 类型 | 必填 | 说明 | 2928 | ------- | ------------------------------- | ---- | ---------------------------------------- | 2929 | buffer | ArrayBuffer \| string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | 2930 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。<br/>约束:offset+length<=buffer.size。 | 2931 2932**返回值:** 2933 2934 | 类型 | 说明 | 2935 | --------------------- | -------- | 2936 | Promise<number> | Promise对象。返回实际写入的长度。 | 2937 2938**示例:** 2939 2940 ```js 2941 let ss= fileio.createStreamSync(path, "r+"); 2942 ss.write("hello, world",{offset: 1,length: 5,position: 5,encoding :'utf-8'}).then(function (number){ 2943 console.info("write succeed and size is:"+ number); 2944 }).catch(function(err){ 2945 console.info("write failed with error:"+ err); 2946 }); 2947 ``` 2948 2949 2950### write<sup>7+</sup> 2951 2952write(buffer: ArrayBuffer | string, options: { 2953 offset?: number; 2954 length?: number; 2955 position?: number; 2956 encoding?: string; 2957}, callback: AsyncCallback<number>): void 2958 2959将数据写入流文件,使用callback异步回调。 2960 2961**系统能力**:SystemCapability.FileManagement.File.FileIO 2962 2963**参数:** 2964 2965 | 参数名 | 类型 | 必填 | 说明 | 2966 | -------- | ------------------------------- | ---- | ------------------------------------------------------------ | 2967 | buffer | ArrayBuffer \| string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | 2968 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。<br/>约束:offset+length<=buffer.size。 | 2969 | callback | AsyncCallback<number> | 是 | 异步写入完成后执行的回调函数。 | 2970 2971**示例:** 2972 2973 ```js 2974 let ss= fileio.createStreamSync(path, "r+"); 2975 ss.write("hello, world", {offset: 1, length: 5, position: 5, encoding :'utf-8'}, function (err, bytesWritten) { 2976 if (bytesWritten) { 2977 // do something 2978 console.info("write succeed and size is:"+ bytesWritten); 2979 } 2980 }); 2981 ``` 2982 2983 2984### writeSync<sup>7+</sup> 2985 2986writeSync(buffer: ArrayBuffer | string, options?: { 2987 offset?: number; 2988 length?: number; 2989 position?: number; 2990 encoding?: string; 2991}): number 2992 2993以同步方法将数据写入流文件。 2994 2995**系统能力**:SystemCapability.FileManagement.File.FileIO 2996 2997**参数:** 2998 2999 | 参数名 | 类型 | 必填 | 说明 | 3000 | ------- | ------------------------------- | ---- | ---------------------------------------- | 3001 | buffer | ArrayBuffer \| string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | 3002 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示期望写入数据的位置相对于数据首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望写入文件的位置。可选,默认从当前位置开始写。<br/>- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。<br/>约束:offset+length<=buffer.size。 | 3003 3004**返回值:** 3005 3006 | 类型 | 说明 | 3007 | ------ | -------- | 3008 | number | 实际写入的长度。 | 3009 3010**示例:** 3011 3012 ```js 3013 let ss= fileio.createStreamSync(path,"r+"); 3014 let num = ss.writeSync("hello, world", {offset: 1, length: 5, position: 5, encoding :'utf-8'}); 3015 ``` 3016 3017 3018### read<sup>7+</sup> 3019 3020read(buffer: ArrayBuffer, options?: { 3021 position?: number; 3022 offset?: number; 3023 length?: number; 3024}): Promise<ReadOut> 3025 3026从流文件读取数据,使用Promise异步回调。 3027 3028**系统能力**:SystemCapability.FileManagement.File.FileIO 3029 3030**参数:** 3031 3032 | 参数名 | 类型 | 必填 | 说明 | 3033 | ------- | ----------- | ---- | ---------------------------------------- | 3034 | buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 | 3035 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。<br/>约束:offset+length<=buffer.size。 | 3036 3037**返回值:** 3038 3039 | 类型 | 说明 | 3040 | ---------------------------------- | ------ | 3041 | Promise<[ReadOut](#readout)> | Promise对象。返回读取的结果。 | 3042 3043**示例:** 3044 3045 ```js 3046 let ss = fileio.createStreamSync(path, "r+"); 3047 ss.read(new ArrayBuffer(4096), {offset: 1, length: 5, position: 5}).then(function (readOut){ 3048 console.info("read data succeed"); 3049 console.log(String.fromCharCode.apply(null, new Uint8Array(readOut.buffer))); 3050 }).catch(function(err){ 3051 console.info("read data failed with error:"+ err); 3052 }); 3053 ``` 3054 3055 3056### read<sup>7+</sup> 3057 3058read(buffer: ArrayBuffer, options: { 3059 position?: number; 3060 offset?: number; 3061 length?: number; 3062}, callback: AsyncCallback<ReadOut>): void 3063 3064从流文件读取数据,使用callback异步回调。 3065 3066**系统能力**:SystemCapability.FileManagement.File.FileIO 3067 3068**参数:** 3069 3070 | 参数名 | 类型 | 必填 | 说明 | 3071 | -------- | ---------------------------------------- | ---- | ---------------------------------------- | 3072 | buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 | 3073 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。<br/>约束:offset+length<=buffer.size。 | 3074 | callback | AsyncCallback<[ReadOut](#readout)> | 是 | 异步从流文件读取数据之后的回调。 | 3075 3076**示例:** 3077 3078 ```js 3079 let ss = fileio.createStreamSync(path, "r+"); 3080 ss.read(new ArrayBuffer(4096),{offset: 1, length: 5, position: 5},function (err, readOut) { 3081 if (readOut) { 3082 console.info("read data succeed"); 3083 console.log(String.fromCharCode.apply(null, new Uint8Array(readOut.buffer))); 3084 } 3085 }); 3086 ``` 3087 3088 3089### readSync<sup>7+</sup> 3090 3091readSync(buffer: ArrayBuffer, options?: { 3092 position?: number; 3093 offset?: number; 3094 length?: number; 3095}): number 3096 3097以同步方法从流文件读取数据。 3098 3099**系统能力**:SystemCapability.FileManagement.File.FileIO 3100 3101**参数:** 3102 3103 | 参数名 | 类型 | 必填 | 说明 | 3104 | ------- | ----------- | ---- | ---------------------------------------- | 3105 | buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 | 3106 | options | Object | 否 | 支持如下选项:<br/>- offset,number类型,表示将数据读取到缓冲区的位置,即相对于缓冲区首地址的偏移。可选,默认为0。<br/>- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度减去偏移长度。<br/>- position,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。<br/>约束:offset+length<=buffer.size。 | 3107 3108**返回值:** 3109 3110 | 类型 | 说明 | 3111 | ------ | -------- | 3112 | number | 实际读取的长度。 | 3113 3114**示例:** 3115 3116 ```js 3117 let ss = fileio.createStreamSync(path, "r+"); 3118 let num = ss.readSync(new ArrayBuffer(4096), {offset: 1, length: 5, position: 5}); 3119 ``` 3120 3121 3122## Dir 3123 3124管理目录,在调用Dir的方法前,需要先通过opendir方法(同步或异步)来构建一个Dir实例。 3125 3126 3127### read 3128 3129read(): Promise<Dirent> 3130 3131读取下一个目录项,使用Promise异步回调。 3132 3133**系统能力**:SystemCapability.FileManagement.File.FileIO 3134 3135**返回值:** 3136 3137 | 类型 | 说明 | 3138 | -------------------------------- | ------------- | 3139 | Promise<[Dirent](#dirent)> | Promise对象。返回表示异步读取目录项的结果。 | 3140 3141**示例:** 3142 3143 ```js 3144 dir.read().then(function (dirent){ 3145 console.log("read succeed:"+JSON.stringify(dirent)); 3146 }).catch(function(err){ 3147 console.info("read failed with error:"+ err); 3148 }); 3149 ``` 3150 3151 3152### read 3153 3154read(callback: AsyncCallback<Dirent>): void 3155 3156读取下一个目录项,使用callback异步回调。 3157 3158**系统能力**:SystemCapability.FileManagement.File.FileIO 3159 3160**参数:** 3161 3162 | 参数名 | 类型 | 必填 | 说明 | 3163 | -------- | -------------------------------------- | ---- | ---------------- | 3164 | callback | AsyncCallback<[Dirent](#dirent)> | 是 | 异步读取下一个目录项之后的回调。 | 3165 3166**示例:** 3167 3168 ```js 3169 dir.read(function (err, dirent) { 3170 if (dirent) { 3171 // do something 3172 console.log("read succeed:"+JSON.stringify(dirent)); 3173 } 3174 }); 3175 ``` 3176 3177 3178### readSync 3179 3180readSync(): Dirent 3181 3182同步读取下一个目录项。 3183 3184**系统能力**:SystemCapability.FileManagement.File.FileIO 3185 3186**返回值:** 3187 3188 | 类型 | 说明 | 3189 | ----------------- | -------- | 3190 | [Dirent](#dirent) | 表示一个目录项。 | 3191 3192**示例:** 3193 3194 ```js 3195 let dirent = dir.readSync(); 3196 ``` 3197 3198 3199### close<sup>7+</sup> 3200 3201close(): Promise<void> 3202 3203异步关闭目录,使用promise形式返回结果。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。 3204 3205**系统能力**:SystemCapability.FileManagement.File.FileIO 3206 3207**示例:** 3208 3209 ```js 3210 dir.close().then(function(err){ 3211 console.info("close dir successfully"); 3212 }); 3213 ``` 3214 3215 3216 ### close<sup>7+</sup> 3217 3218close(callback: AsyncCallback<void>): void 3219 3220异步关闭目录,使用callback形式返回结果。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。 3221 3222**系统能力**:SystemCapability.FileManagement.File.FileIO 3223 3224**示例:** 3225 3226 ```js 3227 dir.close(function(err){ 3228 console.info("close dir successfully"); 3229 }); 3230 ``` 3231 3232 3233### closeSync 3234 3235closeSync(): void 3236 3237用于关闭目录。目录被关闭后,Dir中持有的文件描述将被释放,后续将无法从Dir中读取目录项。 3238 3239**系统能力**:SystemCapability.FileManagement.File.FileIO 3240 3241**示例:** 3242 3243 ```js 3244 dir.closeSync(); 3245 ``` 3246 3247 3248## Dirent 3249 3250在调用Dirent的方法前,需要先通过[dir.read()](#read)方法(同步或异步)来构建一个Dirent实例。 3251 3252**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.File.FileIO。 3253 3254### 属性 3255 3256| 名称 | 参数类型 | 可读 | 可写 | 说明 | 3257| ---- | ------ | ---- | ---- | ------- | 3258| name | string | 是 | 否 | 目录项的名称。 | 3259 3260 3261### isBlockDevice 3262 3263isBlockDevice(): boolean 3264 3265用于判断当前目录项是否是块特殊文件。一个块特殊文件只能以块为粒度进行访问,且访问的时候带缓存。 3266 3267**系统能力**:SystemCapability.FileManagement.File.FileIO 3268 3269**返回值:** 3270 3271 | 类型 | 说明 | 3272 | ------- | ---------------- | 3273 | boolean | 表示当前目录项是否是块特殊设备。 | 3274 3275**示例:** 3276 3277 ```js 3278 let dir = fileio.opendirSync(path); 3279 let isBLockDevice = dir.readSync().isBlockDevice(); 3280 ``` 3281 3282 3283### isCharacterDevice 3284 3285isCharacterDevice(): boolean 3286 3287用于判断当前目录项是否是字符特殊设备。一个字符特殊设备可进行随机访问,且访问的时候不带缓存。 3288 3289**系统能力**:SystemCapability.FileManagement.File.FileIO 3290 3291**返回值:** 3292 3293 | 类型 | 说明 | 3294 | ------- | ----------------- | 3295 | boolean | 表示当前目录项是否是字符特殊设备。 | 3296 3297**示例:** 3298 3299 ```js 3300 let dir = fileio.opendirSync(path); 3301 let isCharacterDevice = dir.readSync().isCharacterDevice(); 3302 ``` 3303 3304 3305### isDirectory 3306 3307isDirectory(): boolean 3308 3309用于判断当前目录项是否是目录。 3310 3311**系统能力**:SystemCapability.FileManagement.File.FileIO 3312 3313**返回值:** 3314 3315 | 类型 | 说明 | 3316 | ------- | ------------- | 3317 | boolean | 表示当前目录项是否是目录。 | 3318 3319**示例:** 3320 3321 ```js 3322 let dir = fileio.opendirSync(path); 3323 let isDirectory = dir.readSync().isDirectory(); 3324 ``` 3325 3326 3327### isFIFO 3328 3329isFIFO(): boolean 3330 3331用于判断当前目录项是否是命名管道(有时也称为FIFO)。命名管道通常用于进程间通信。 3332 3333**系统能力**:SystemCapability.FileManagement.File.FileIO 3334 3335**返回值:** 3336 3337 | 类型 | 说明 | 3338 | ------- | --------------- | 3339 | boolean | 表示当前目录项是否是FIFO。 | 3340 3341**示例:** 3342 3343 ```js 3344 let dir = fileio.opendirSync(path); 3345 let isFIFO = dir.readSync().isFIFO(); 3346 ``` 3347 3348 3349### isFile 3350 3351isFile(): boolean 3352 3353用于判断当前目录项是否是普通文件。 3354 3355**系统能力**:SystemCapability.FileManagement.File.FileIO 3356 3357**返回值:** 3358 3359 | 类型 | 说明 | 3360 | ------- | --------------- | 3361 | boolean | 表示当前目录项是否是普通文件。 | 3362 3363**示例:** 3364 3365 ```js 3366 let dir = fileio.opendirSync(path); 3367 let isFile = dir.readSync().isFile(); 3368 ``` 3369 3370 3371### isSocket 3372 3373isSocket(): boolean 3374 3375用于判断当前目录项是否是套接字。 3376 3377**系统能力**:SystemCapability.FileManagement.File.FileIO 3378 3379**返回值:** 3380 3381 | 类型 | 说明 | 3382 | ------- | -------------- | 3383 | boolean | 表示当前目录项是否是套接字。 | 3384 3385**示例:** 3386 3387 ```js 3388 let dir = fileio.opendirSync(path); 3389 let isSocket = dir.readSync().isSocket(); 3390 ``` 3391 3392 3393### isSymbolicLink 3394 3395isSymbolicLink(): boolean 3396 3397用于判断当前目录项是否是符号链接。 3398 3399**系统能力**:SystemCapability.FileManagement.File.FileIO 3400 3401**返回值:** 3402 3403 | 类型 | 说明 | 3404 | ------- | --------------- | 3405 | boolean | 表示当前目录项是否是符号链接。 | 3406 3407**示例:** 3408 3409 ```js 3410 let dir = fileio.opendirSync(path); 3411 let isSymbolicLink = dir.readSync().isSymbolicLink(); 3412 ``` 3413