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