# @ohos.file.fs (File Management) The **fs** module provides APIs for file operations, including basic file management, directory management, file information statistics, and stream read and write. > **NOTE** > > - The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. > > - The APIs of this module support processing of error codes. For details, see [File Management Error Codes](../errorcodes/errorcode-filemanagement.md). ## Modules to Import ```js import fs from '@ohos.file.fs'; ``` ## Guidelines Before using the APIs provided by this module to perform operations on files or directories, obtain the path of the file or directory in the application sandbox as follows: **Stage Model** ```js import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage) { let context = this.context; let pathDir = context.filesDir; } } ``` **FA Model** ```js import featureAbility from '@ohos.ability.featureAbility'; let context = featureAbility.getContext(); context.getFilesDir().then((data) => { let pathDir = data; }) ``` For details about how to obtain the FA model context, see [Context](js-apis-inner-app-context.md#context). ## fs.stat stat(file: string|number): Promise<Stat> Obtains detailed file information. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------- | | file | string\|number | Yes | Path of the file in the application sandbox or file descriptor (FD) of the file.| **Return value** | Type | Description | | ---------------------------- | ---------- | | Promise<[Stat](#stat)> | Promise used to return the file information obtained.| **Example** ```js let filePath = pathDir + "test.txt"; fs.stat(filePath).then((stat) => { console.info("get file info succeed, the size of file is " + stat.size); }).catch((err) => { console.info("get file info failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.stat stat(file: string|number, callback: AsyncCallback<Stat>): void Obtains detailed file information. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ---------------------------------- | ---- | ------------------------------ | | file | string\|number | Yes | Path of the file in the application sandbox or file descriptor (FD) of the file. | | callback | AsyncCallback<[Stat](#stat)> | Yes | Callback invoked to return the file information obtained.| **Example** ```js fs.stat(pathDir, (err, stat) => { if (err) { console.info("get file info failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("get file info succeed, the size of file is " + stat.size); } }); ``` ## fs.statSync statSync(file: string|number): Stat Obtains detailed file information synchronously. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------- | | file | string\|number | Yes | Path of the file in the application sandbox or file descriptor (FD) of the file.| **Return value** | Type | Description | | ------------- | ---------- | | [Stat](#stat) | File information obtained.| **Example** ```js let stat = fs.statSync(pathDir); console.info("get file info succeed, the size of file is " + stat.size); ``` ## fs.access access(path: string): Promise<boolean> Checks whether a file exists. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox. | **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<boolean> | Promise used to return a Boolean value.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.access(filePath).then((res) => { if (res) { console.info("file exists"); } }).catch((err) => { console.info("access failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.access access(path: string, callback: AsyncCallback<boolean>): void Checks whether a file exists. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox. | | callback | AsyncCallback<boolean> | Yes | Callback invoked to return the result. | **Example** ```js let filePath = pathDir + "/test.txt"; fs.access(filePath, (err, res) => { if (err) { console.info("access failed with error message: " + err.message + ", error code: " + err.code); } else { if (res) { console.info("file exists"); } } }); ``` ## fs.accessSync accessSync(path: string): boolean Synchronously checks whether a file exists. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox. | **Example** ```js let filePath = pathDir + "/test.txt"; try { let res = fs.accessSync(filePath); if (res) { console.info("file exists"); } } catch(err) { console.info("accessSync failed with error message: " + err.message + ", error code: " + err.code); } ``` ## fs.close close(file: File|number): Promise<void> Closes a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ------------ | | file | [File](#file)\|number | Yes | File object or FD of the file to close.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.close(file).then(() => { console.info("File closed"); fs.closeSync(file); }).catch((err) => { console.info("close file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.close close(file: File|number, callback: AsyncCallback<void>): void Closes a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ------------------------- | ---- | ------------ | | file | [File](#file)\|number | Yes | File object or FD of the file to close.| | callback | AsyncCallback<void> | Yes | Callback invoked when the file is closed asynchronously.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.close(file, (err) => { if (err) { console.info("close file failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("close file success"); } }); ``` ## fs.closeSync closeSync(file: File|number): void Synchronously closes a file. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ------------ | | file | [File](#file)\|number | Yes | File object or FD of the file to close.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.closeSync(file); ``` ## fs.copyFile copyFile(src: string|number, dest: string|number, mode?: number): Promise<void> Copies a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | -------------------------- | ---- | ---------------------------------------- | | src | string\|number | Yes | Path or FD of the file to copy. | | dest | string\|number | Yes | Destination path of the file or FD of the file created. | | mode | number | No | Whether to overwrite the file of the same name in the destination path. The default value is **0**, which is the only value supported.
**0**: overwrite the file of the same name.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let srcPath = pathDir + "srcDir/test.txt"; let dstPath = pathDir + "dstDir/test.txt"; fs.copyFile(srcPath, dstPath).then(() => { console.info("copy file succeed"); }).catch((err) => { console.info("copy file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.copyFile copyFile(src: string|number, dest: string|number, mode?: number, callback: AsyncCallback<void>): void Copies a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | -------------------------- | ---- | ---------------------------------------- | | src | string\|number | Yes | Path or FD of the file to copy. | | dest | string\|number | Yes | Destination path of the file or FD of the file created. | | mode | number | No | Whether to overwrite the file of the same name in the destination path. The default value is **0**, which is the only value supported.
**0**: overwrite the file with the same name and truncate the part that is not overwritten.| | callback | AsyncCallback<void> | Yes | Callback invoked when the file is copied asynchronously. | **Example** ```js let srcPath = pathDir + "srcDir/test.txt"; let dstPath = pathDir + "dstDir/test.txt"; fs.copyFile(srcPath, dstPath, (err) => { if (err) { console.info("copy file failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("copy file success"); } }); ``` ## fs.copyFileSync copyFileSync(src: string|number, dest: string|number, mode?: number): void Synchronously copies a file. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | -------------------------- | ---- | ---------------------------------------- | | src | string\|number | Yes | Path or FD of the file to copy. | | dest | string\|number | Yes | Destination path of the file or FD of the file created. | | mode | number | No | Whether to overwrite the file of the same name in the destination path. The default value is **0**, which is the only value supported.
**0**: overwrite the file with the same name and truncate the part that is not overwritten.| **Example** ```js let srcPath = pathDir + "srcDir/test.txt"; let dstPath = pathDir + "dstDir/test.txt"; fs.copyFileSync(srcPath, dstPath); ``` ## fs.mkdir mkdir(path: string): Promise<void> Creates a directory. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the directory in the application sandbox. | **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let dirPath = pathDir + '/testDir'; fs.mkdir(dirPath).then(() => { console.info("Directory created"); }).catch((err) => { console.info("mkdir failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.mkdir mkdir(path: string, callback: AsyncCallback<void>): void Creates a directory. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the directory in the application sandbox. | | callback | AsyncCallback<void> | Yes | Callback invoked when the directory is created asynchronously. | **Example** ```js let dirPath = pathDir + '/testDir'; fs.mkdir(dirPath, (err) => { if (err) { console.info("mkdir failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("mkdir success"); } }); ``` ## fs.mkdirSync mkdirSync(path: string): void Synchronously creates a directory. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the directory in the application sandbox. | **Example** ```js let dirPath = path + '/testDir'; fs.mkdirSync(dirPath); ``` ## fs.open open(path: string, mode?: number): Promise<File> Opens a file. This API uses a promise to return the result. File uniform resource identifiers (URIs) are supported. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox or URI of the file. | | mode | number | No | [Mode](#openmode) for opening the file. You must specify one of the following options. By default, the file is open in read-only mode.
- **OpenMode.READ_ONLY(0o0)**: Open the file in read-only mode.
- **OpenMode.WRITE_ONLY(0o1)**: Open the file in write-only mode.
- **OpenMode.READ_WRITE(0o2)**: Open the file in read/write mode.
You can also specify the following options, separated by a bitwise OR operator (|). By default, no additional options are given.
- **OpenMode.CREATE(0o100)**: If the file does not exist, create it.
- **OpenMode.TRUNC(0o1000)**: If the file exists and is open in write-only or read/write mode, truncate the file length to 0.
- **OpenMode.APPEND(0o2000)**: Open the file in append mode. New data will be added to the end of the file.
- **OpenMode.NONBLOCK(0o4000)**: If **path** points to a named pipe (also known as a FIFO), block special file, or character special file, perform non-blocking operations on the open file and in subsequent I/Os.
- **OpenMode.DIR(0o200000)**: If **path** does not point to a directory, throw an exception.
- **OpenMode.NOFOLLOW(0o400000)**: If **path** points to a symbolic link, throw an exception.
- **OpenMode.SYNC(0o4010000)**: Open the file in synchronous I/O mode.| **Return value** | Type | Description | | --------------------- | ----------- | | Promise<[File](#file)> | Promise used to return the file object.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.open(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE).then((file) => { console.info("file fd: " + file.fd); }).catch((err) => { console.info("open file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.open open(path: string, mode?: number, callback: AsyncCallback<File>): void Opens a file. This API uses an asynchronous callback to return the result. File URIs are supported. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------------- | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox or URI of the file. | | mode | number | No | [Mode](#openmode) for opening the file. You must specify one of the following options. By default, the file is open in read-only mode.
- **OpenMode.READ_ONLY(0o0)**: Open the file in read-only mode.
- **OpenMode.WRITE_ONLY(0o1)**: Open the file in write-only mode.
- **OpenMode.READ_WRITE(0o2)**: Open the file in read/write mode.
You can also specify the following options, separated by a bitwise OR operator (|). By default, no additional options are given.
- **OpenMode.CREATE(0o100)**: If the file does not exist, create it.
- **OpenMode.TRUNC(0o1000)**: If the file exists and is open in write-only or read/write mode, truncate the file length to 0.
- **OpenMode.APPEND(0o2000)**: Open the file in append mode. New data will be added to the end of the file.
- **OpenMode.NONBLOCK(0o4000)**: If **path** points to a named pipe (also known as a FIFO), block special file, or character special file, perform non-blocking operations on the open file and in subsequent I/Os.
- **OpenMode.DIR(0o200000)**: If **path** does not point to a directory, throw an exception.
- **OpenMode.NOFOLLOW(0o400000)**: If **path** points to a symbolic link, throw an exception.
- **OpenMode.SYNC(0o4010000)**: Open the file in synchronous I/O mode.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.open(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE, (err, file) => { if (err) { console.info("mkdir failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("file fd: " + file.fd); } }); ``` ## fs.openSync openSync(path: string, mode?: number): File Synchronously opens a file. File URIs are supported. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox or URI of the file. | | mode | number | No | [Mode](#openmode) for opening the file. You must specify one of the following options. By default, the file is open in read-only mode.
- **OpenMode.READ_ONLY(0o0)**: Open the file in read-only mode.
- **OpenMode.WRITE_ONLY(0o1)**: Open the file in write-only mode.
- **OpenMode.READ_WRITE(0o2)**: Open the file in read/write mode.
You can also specify the following options, separated by a bitwise OR operator (|). By default, no additional options are given.
- **OpenMode.CREATE(0o100)**: If the file does not exist, create it.
- **OpenMode.TRUNC(0o1000)**: If the file exists and is open in write-only or read/write mode, truncate the file length to 0.
- **OpenMode.APPEND(0o2000)**: Open the file in append mode. New data will be added to the end of the file.
- **OpenMode.NONBLOCK(0o4000)**: If **path** points to a named pipe (also known as a FIFO), block special file, or character special file, perform non-blocking operations on the open file and in subsequent I/Os.
- **OpenMode.DIR(0o200000)**: If **path** does not point to a directory, throw an exception.
- **OpenMode.NOFOLLOW(0o400000)**: If **path** points to a symbolic link, throw an exception.
- **OpenMode.SYNC(0o4010000)**: Open the file in synchronous I/O mode.| **Return value** | Type | Description | | ------ | ----------- | | [File](#file) | File object opened.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); console.info("file fd: " + file.fd); fs.closeSync(file); ``` ## fs.read read(fd: number, buffer: ArrayBuffer, options?: { offset?: number; length?: number; }): Promise<number> Reads data from a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | ------- | ----------- | ---- | ------------------------------------------------------------ | | fd | number | Yes | FD of the file. | | buffer | ArrayBuffer | Yes | Buffer used to store the file data read. | | options | Object | No | The options are as follows:
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.
- **length** (number): length of the data to read. This parameter is optional. The default value is the buffer length.| **Return value** | Type | Description | | ---------------------------------- | ------ | | Promise<number> | Promise used to return the data read.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE); let buf = new ArrayBuffer(4096); fs.read(file.fd, buf).then((readLen) => { console.info("Read file data successfully"); console.info(String.fromCharCode.apply(null, new Uint8Array(readLen))); fs.closeSync(file); }).catch((err) => { console.info("read file data failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.read read(fd: number, buffer: ArrayBuffer, options?: { offset?: number; length?: number; }, callback: AsyncCallback<number>): void Reads data from a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | buffer | ArrayBuffer | Yes | Buffer used to store the file data read. | | options | Object | No | The options are as follows:
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.
- **length** (number): length of the data to read. This parameter is optional. The default value is the buffer length.| | callback | AsyncCallback<number> | Yes | Callback invoked when the data is read asynchronously. | **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE); let buf = new ArrayBuffer(4096); fs.read(file.fd, buf, (err, readLen) => { if (err) { console.info("mkdir failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("Read file data successfully"); console.info(String.fromCharCode.apply(null, new Uint8Array(readLen))); fs.closeSync(file); } }); ``` ## fs.readSync readSync(fd: number, buffer: ArrayBuffer, options?: { offset?: number; length?: number; }): number Synchronously reads data from a file. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ----------- | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | buffer | ArrayBuffer | Yes | Buffer used to store the file data read. | | options | Object | No | The options are as follows:
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.
- **length** (number): length of the data to read. This parameter is optional. The default value is the buffer length.| **Return value** | Type | Description | | ------ | -------- | | number | Length of the data read.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE); let buf = new ArrayBuffer(4096); let num = fs.readSync(file.fd, buf); fs.closeSync(file); ``` ## fs.rmdir rmdir(path: string): Promise<void> Deletes a directory. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------- | | path | string | Yes | Path of the directory in the application sandbox.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let dirPath = pathDir + '/testDir'; fs.rmdir(dirPath).then(() => { console.info("Directory deleted"); }).catch((err) => { console.info("rmdir failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.rmdir rmdir(path: string, callback: AsyncCallback<void>): void Deletes a directory. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | -------------------------- | | path | string | Yes | Path of the directory in the application sandbox.| | callback | AsyncCallback<void> | Yes | Callback invoked when the directory is deleted asynchronously. | **Example** ```js let dirPath = pathDir + '/testDir'; fs.rmdir(dirPath, (err) => { if (err) { console.info("rmdir failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("Directory deleted"); } }); ``` ## fs.rmdirSync rmdirSync(path: string): void Synchronously deletes a directory. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------- | | path | string | Yes | Path of the directory in the application sandbox.| **Example** ```js let dirPath = pathDir + '/testDir'; fs.rmdirSync(dirPath); ``` ## fs.unlink unlink(path: string): Promise<void> Deletes a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------- | | path | string | Yes | Path of the file in the application sandbox.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.unlink(filePath).then(() => { console.info("File deleted"); }).catch((err) => { console.info("remove file failed with error message: " + err.message + ", error code: " + err.codeor); }); ``` ## fs.unlink unlink(path: string, callback: AsyncCallback<void>): void Deletes a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | -------------------------- | | path | string | Yes | Path of the file in the application sandbox.| | callback | AsyncCallback<void> | Yes | Callback invoked when the file is deleted asynchronously. | **Example** ```js let filePath = pathDir + "/test.txt"; fs.unlink(filePath, (err) => { if (err) { console.info("remove file failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("File deleted"); } }); ``` ## fs.unlinkSync unlinkSync(path: string): void Synchronously deletes a file. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------- | | path | string | Yes | Path of the file in the application sandbox.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.unlinkSync(filePath); ``` ## fs.write write(fd: number, buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }): Promise<number> Writes data into a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ------------------------------- | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | buffer | ArrayBuffer\|string | Yes | Data to write. It can be a string or data from a buffer. | | options | Object | No | The options are as follows:
- **offset** (number): start position to write the data in the file. This parameter is optional. By default, data is written from the current position.
- **length** (number): length of the data to write. This parameter is optional. The default value is the buffer length.
- **encoding** (string): format of the data to be encoded when the data is a string. The default value is **'utf-8'**, which is the only value supported.| **Return value** | Type | Description | | --------------------- | -------- | | Promise<number> | Promise used to return the length of the data written.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); fs.write(file.fd, "hello, world").then((writeLen) => { console.info("write data to file succeed and size is:" + writeLen); fs.closeSync(file); }).catch((err) => { console.info("write data to file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.write write(fd: number, buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }, callback: AsyncCallback<number>): void Writes data into a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ------------------------------- | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | buffer | ArrayBuffer\|string | Yes | Data to write. It can be a string or data from a buffer. | | options | Object | No | The options are as follows:
- **offset** (number): start position to write the data in the file. This parameter is optional. By default, data is written from the current position.
- **length** (number): length of the data to write. This parameter is optional. The default value is the buffer length.
- **encoding** (string): format of the data to be encoded when the data is a string. The default value is **'utf-8'**, which is the only value supported.| | callback | AsyncCallback<number> | Yes | Callback invoked when the data is written asynchronously. | **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); fs.write(file.fd, "hello, world", (err, writeLen) => { if (err) { console.info("write failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("write data to file succeed and size is:" + writeLen); fs.closeSync(file); } }); ``` ## fs.writeSync writeSync(fd: number, buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }): number Synchronously writes data into a file. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ------------------------------- | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | buffer | ArrayBuffer\|string | Yes | Data to write. It can be a string or data from a buffer. | | options | Object | No | The options are as follows:
- **offset** (number): start position to write the data in the file. This parameter is optional. By default, data is written from the current position.
- **length** (number): length of the data to write. This parameter is optional. The default value is the buffer length.
- **encoding** (string): format of the data to be encoded when the data is a string. The default value is **'utf-8'**, which is the only value supported.| **Return value** | Type | Description | | ------ | -------- | | number | Length of the data written in the file.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); let writeLen = fs.writeSync(file.fd, "hello, world"); console.info("write data to file succeed and size is:" + writeLen); fs.closeSync(file); ``` ## fs.truncate truncate(file: string|number, len?: number): Promise<void> Truncates a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------- | | file | string\|number | Yes | Path of the file in the application sandbox or file descriptor (FD) of the file. | | len | number | No | File length, in bytes, after truncation.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let filePath = pathDir + "/test.txt"; let len = 5; fs.truncate(filePath, len).then(() => { console.info("File truncated"); }).catch((err) => { console.info("truncate file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.truncate truncate(file: string|number, len?: number, callback: AsyncCallback<void>): void Truncates a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | -------------------------------- | | file | string\|number | Yes | Path of the file in the application sandbox or file descriptor (FD) of the file. | | len | number | No | File length, in bytes, after truncation.| | callback | AsyncCallback<void> | Yes | Callback that returns no value. | **Example** ```js let filePath = pathDir + "/test.txt"; let len = 5; fs.truncate(filePath, len, (err) => { if (err) { console.info("truncate failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("truncate success"); } }); ``` ## fs.truncateSync truncateSync(file: string|number, len?: number): void Synchronously truncates a file. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------- | | file | string\|number | Yes | Path of the file in the application sandbox or file descriptor (FD) of the file. | | len | number | No | File length, in bytes, after truncation.| **Example** ```js let filePath = pathDir + "/test.txt"; let len = 5; fs.truncateSync(filePath, len); ``` ## fs.readText readText(filePath: string, options?: { offset?: number; length?: number; encoding?: string; }): Promise<string> Reads the text content of a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------------------------------------ | | filePath | string | Yes | Path of the file in the application sandbox. | | options | Object | No | The options are as follows:
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.
- **length** (number): length of the data to read. This parameter is optional. The default value is the file length.
- **encoding** (string): format of the string to be encoded. The default value is **'utf-8'**, which is the only value supported.| **Return value** | Type | Description | | --------------------- | ---------- | | Promise<string> | Promise used to return the content read.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.readText(filePath).then((str) => { console.info("readText succeed:" + str); }).catch((err) => { console.info("readText failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.readText readText(filePath: string, options?: { offset?: number; length?: number; encoding?: string; }, callback: AsyncCallback<string>): void Reads the text content of a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | --------------------------- | ---- | ------------------------------------------------------------ | | filePath | string | Yes | Path of the file in the application sandbox. | | options | Object | No | The options are as follows:
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.
- **length** (number): length of the data to read. This parameter is optional. The default value is the file length.
- **encoding** (string): format of the string to be encoded. The default value is **'utf-8'**, which is the only value supported.| | callback | AsyncCallback<string> | Yes | Callback invoked to return the content read. | **Example** ```js let filePath = pathDir + "/test.txt"; fs.readText(filePath, { offset: 1, encoding: 'UTF-8' }, (err, str) => { if (err) { console.info("read text failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("readText succeed:" + str); } }); ``` ## fs.readTextSync readTextSync(filePath: string, options?: { offset?: number; length?: number; encoding?: string; }): string Synchronously reads the text of a file. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------------------------------------ | | filePath | string | Yes | Path of the file in the application sandbox. | | options | Object | No | The options are as follows:
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.
- **length** (number): length of the data to read. This parameter is optional. The default value is the file length.
- **encoding** (string): format of the string to be encoded. The default value is **'utf-8'**, which is the only value supported.| **Return value** | Type | Description | | ------ | -------------------- | | string | Promise used to return the content of the file read.| **Example** ```js let filePath = pathDir + "/test.txt"; let str = fs.readTextSync(filePath, {offset: 1, length: 3}); console.info("readText succeed:" + str); ``` ## fs.lstat lstat(path: string): Promise<Stat> Obtains information about a symbolic link. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | | path | string | Yes | Path of the symbolic link in the application sandbox.| **Return value** | Type | Description | | ---------------------------- | ---------- | | Promise<[Stat](#stat)> | Promise used to return the symbolic link information obtained. For details, see **stat**.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.lstat(filePath).then((stat) => { console.info("get link status succeed, the size of file is" + stat.size); }).catch((err) => { console.info("get link status failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.lstat lstat(path: string, callback: AsyncCallback<Stat>): void Obtains information about a symbolic link. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ---------------------------------- | ---- | -------------------------------------- | | path | string | Yes | Path of the symbolic link in the application sandbox.| | callback | AsyncCallback<[Stat](#stat)> | Yes | Callback invoked to return the symbolic link information obtained. | **Example** ```js let filePath = pathDir + "/test.txt"; fs.lstat(filePath, (err, stat) => { if (err) { console.info("lstat failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("get link status succeed, the size of file is" + stat.size); } }); ``` ## fs.lstatSync lstatSync(path: string): Stat Obtains information about a symbolic link synchronously. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | -------------------------------------- | | path | string | Yes | Path of the file in the application sandbox.| **Return value** | Type | Description | | ------------- | ---------- | | [Stat](#stat) | File information obtained.| **Example** ```js let filePath = pathDir + "/test.txt"; let stat = fs.lstatSync(filePath); ``` ## fs.rename rename(oldPath: string, newPath: string): Promise<void> Renames a file or directory. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | ------- | ------ | ---- | ---------------------------- | | oldPath | string | Yes | Path of the file to rename in the application sandbox.| | newPath | string | Yes | Path of the renamed file in the application sandbox. | **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let srcFile = pathDir + "/test.txt"; let dstFile = pathDir + '/new.txt'; fs.rename(srcFile, dstFile).then(() => { console.info("File renamed"); }).catch((err) => { console.info("rename failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.rename rename(oldPath: string, newPath: string, callback: AsyncCallback<void>): void Renames a file or directory. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | ---------------------------- | | oldPath | string | Yes | Path of the file to rename in the application sandbox.| | newPath | string | Yes | Path of the renamed file in the application sandbox. | | callback | AsyncCallback<void> | Yes | Callback invoked when the file is asynchronously renamed. | **Example** ```js let srcFile = pathDir + "/test.txt"; let dstFile = pathDir + '/new.txt'; fs.rename(srcFile, dstFile, (err) => { if (err) { console.info("rename failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("rename success"); } }); ``` ## fs.renameSync renameSync(oldPath: string, newPath: string): void Renames a file or directory synchronously. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | ------- | ------ | ---- | ---------------------------- | | oldPath | string | Yes | Path of the file to rename in the application sandbox.| | newPath | string | Yes | Path of the renamed file in the application sandbox. | **Example** ```js let srcFile = pathDir + "/test.txt"; let dstFile = pathDir + '/new.txt'; fs.renameSync(srcFile, dstFile); ``` ## fs.fsync fsync(fd: number): Promise<void> Flushes data of a file to disk. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ------------ | | fd | number | Yes | FD of the file.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.fsync(file.fd).then(() => { console.info("Data flushed"); }).catch((err) => { console.info("sync data failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.fsync fsync(fd: number, callback: AsyncCallback<void>): void Flushes data of a file to disk. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ------------------------- | ---- | --------------- | | fd | number | Yes | FD of the file. | | Callback | AsyncCallback<void> | Yes | Callback invoked when the file data is synchronized in asynchronous mode.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.fsync(file.fd, (err) => { if (err) { console.info("fsync failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("fsync success"); fs.closeSync(file); } }); ``` ## fs.fsyncSync fsyncSync(fd: number): void Flushes data of a file to disk synchronously. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ------------ | | fd | number | Yes | FD of the file.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.fsyncSync(file.fd); fs.closeSync(file); ``` ## fs.fdatasync fdatasync(fd: number): Promise<void> Flushes data of a file to disk. This API uses a promise to return the result. **fdatasync()** is similar to **fsync()**, but does not flush modified metadata unless that metadata is needed. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ------------ | | fd | number | Yes | FD of the file.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.fdatasync(file.fd).then((err) => { console.info("Data flushed"); fs.closeSync(file); }).catch((err) => { console.info("sync data failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.fdatasync fdatasync(fd: number, callback: AsyncCallback<void>): void Flushes data of a file to disk. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ------------------------------- | ---- | ----------------- | | fd | number | Yes | FD of the file. | | callback | AsyncCallback<void> | Yes | Callback invoked when the file data is synchronized in asynchronous mode.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.fdatasync (file.fd, (err) => { if (err) { console.info("fdatasync failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("fdatasync success"); fs.closeSync(file); } }); ``` ## fs.fdatasyncSync fdatasyncSync(fd: number): void Synchronizes data in a file synchronously. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ------------ | | fd | number | Yes | FD of the file.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); let stat = fs.fdatasyncSync(file.fd); fs.closeSync(file); ``` ## fs.symlink symlink(target: string, srcPath: string): Promise<void> Creates a symbolic link based on a file path. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | ------- | ------ | ---- | ---------------------------- | | target | string | Yes | Path of the source file in the application sandbox. | | srcPath | string | Yes | Path of the symbolic link in the application sandbox.| **Return value** | Type | Description | | ------------------- | ---------------------------- | | Promise<void> | Promise that returns no value.| **Example** ```js let srcFile = pathDir + "/test.txt"; let dstFile = pathDir + '/test'; fs.symlink(srcFile, dstFile).then(() => { console.info("Symbolic link created"); }).catch((err) => { console.info("symlink failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.symlink symlink(target: string, srcPath: string, callback: AsyncCallback<void>): void Creates a symbolic link based on a file path. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | -------------------------------- | | target | string | Yes | Path of the source file in the application sandbox. | | srcPath | string | Yes | Path of the symbolic link in the application sandbox. | | callback | AsyncCallback<void> | Yes | Callback invoked when the symbolic link is created asynchronously.| **Example** ```js let srcFile = pathDir + "/test.txt"; let dstFile = pathDir + '/test'; fs.symlink(srcFile, dstFile, (err) => { if (err) { console.info("symlink failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("symlink success"); } }); ``` ## fs.symlinkSync symlinkSync(target: string, srcPath: string): void Synchronously creates a symbolic link based on a file path. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | ------- | ------ | ---- | ---------------------------- | | target | string | Yes | Path of the source file in the application sandbox. | | srcPath | string | Yes | Path of the symbolic link in the application sandbox.| **Example** ```js let srcFile = pathDir + "/test.txt"; let dstFile = pathDir + '/test'; fs.symlinkSync(srcFile, dstFile); ``` ## fs.listFile listFile(path: string, options?: { recursion?: boolean; listNum?: number; filter?: Filter; }): Promise; Lists all files in a directory. This API uses a promise to return the result.
This API supports recursive listing of all files (including files in subdirectories) and file filtering. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | path | string | Yes | Path of the directory in the application sandbox.| | options | Object | No | File filtering options.| **options parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | recursion | boolean | No | Whether to list all files in subdirectories recursively. The default value is **false**.| | listNum | number | No | Number of file names to list. The default value **0** means to list all files.| | filter | [Filter](#filter) | No | File filtering options. Currently, only the match by file name extension, fuzzy search by file name, and filter by file size or latest modification time are supported.| **Return value** | Type | Description | | --------------------- | ---------- | | Promise<string[]> | Promise used to return the files names listed.| **Example** ```js let options = { "recursion": false, "listNum": 0, "filter": { "suffix": [".png", ".jpg", ".jpeg"], "displayName": ["%abc", "efg%"], "fileSizeOver": 1024, "lastModifiedAfter": new Date().getTime(), } }; fs.listFile(pathDir, options).then((filenames) => { console.info("listFile succeed"); for (let i = 0; i < filenames.size; i++) { console.info("fileName: %s", filenames[i]); } }).catch((err) => { console.info("list file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.listFile listFile(path: string, options?: { recursion?: boolean; listNum?: number; filter?: Filter; }, callback: AsyncCallback): void; Lists all files in a directory. This API uses an asynchronous callback to return the result.
This API supports recursive listing of all files (including files in subdirectories) and file filtering. **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | path | string | Yes | Path of the directory in the application sandbox.| | options | Object | No | File filtering options.| | callback | AsyncCallback<string[]> | Yes | Callback invoked to return the file names listed. | **options parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | recursion | boolean | No | Whether to list all files in subdirectories recursively. The default value is **false**.| | listNum | number | No | Number of file names to list. The default value **0** means to list all files.| | filter | [Filter](#filter) | No | File filtering options. Currently, only the match by file name extension, fuzzy search by file name, and filter by file size or latest modification time are supported.| **Example** ```js let options = { "recursion": false, "listNum": 0, "filter": { "suffix": [".png", ".jpg", ".jpeg"], "displayName": ["%abc", "efg%"], "fileSizeOver": 1024, "lastModifiedAfter": new Date().getTime(), } }; fs.listFile(pathDir, options, (err, filenames) => { if (err) { console.info("list file failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("listFile succeed"); for (let i = 0; i < filenames.size; i++) { console.info("filename: %s", filenames[i]); } } }); ``` ## fs.listFileSync listFileSync(path: string, options?: { recursion?: boolean; listNum?: number; filter?: Filter; }): string[]; Lists all files in a directory synchronously. This API supports recursive listing of all files (including files in subdirectories) and file filtering. **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | path | string | Yes | Path of the directory in the application sandbox.| | options | Object | No | File filtering options.| **options parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | recursion | boolean | No | Whether to list all files in subdirectories recursively. The default value is **false**.| | listNum | number | No | Number of file names to list. The default value **0** means to list all files.| | filter | [Filter](#filter) | No | File filtering options. Currently, only the match by file name extension, fuzzy search by file name, and filter by file size or latest modification time are supported.| **Return value** | Type | Description | | --------------------- | ---------- | | string[] | File names listed.| **Example** ```js let options = { "recursion": false, "listNum": 0, "filter": { "suffix": [".png", ".jpg", ".jpeg"], "displayName": ["%abc", "efg%"], "fileSizeOver": 1024, "lastModifiedAfter": new Date().getTime(), } }; let filenames = fs.listFileSync(pathDir, options); console.info("listFile succeed"); for (let i = 0; i < filenames.size; i++) { console.info("filename: %s", filenames[i]); } ``` ## fs.moveFile moveFile(src: string, dest: string, mode?: number): Promise; Moves a file. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | src | string | Yes | Path of the file to move in the application sandbox.| | dest | string | Yes | Destination path of the file in the application sandbox.| | mode | number | No | Whether to overwrite the file of the same name in the destination directory. The value **0** means to overwrite the file of the same name in the destination directory. The value **1** means to throw an exception if a file of the same name exists in the destination directory. The default value is **0**.| **Example** ```js fs.moveFile(srcPath, destPath, 0).then(() => { console.info("move file succeed"); }).catch((err) => { console.info("move file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.moveFile moveFile(src: string, dest: string, mode?: number, callback: AsyncCallback): void; Moves a file. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | src | string | Yes | Path of the file to move in the application sandbox.| | dest | string | Yes | Destination path of the file in the application sandbox.| | mode | number | No | Whether to overwrite the file of the same name in the destination directory. The value **0** means to overwrite the file of the same name in the destination directory. The value **1** means to throw an exception if a file of the same name exists in the destination directory. The default value is **0**.| | callback | AsyncCallback<void> | Yes | Callback invoked when the file is moved. | **Example** ```js fs.moveFile(srcPath, destPath, 0, (err) => { if (err) { console.info("move file failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("move file succeed"); } }); ``` ## fs.moveFileSync moveFile(src: string, dest: string, mode?: number): void; Moves a file synchronously. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | src | string | Yes | Path of the file to move in the application sandbox.| | dest | string | Yes | Destination path of the file in the application sandbox.| | mode | number | No | Whether to overwrite the file of the same name in the destination directory. The value **0** means to overwrite the file of the same name in the destination directory. The value **1** means to throw an exception if a file of the same name exists in the destination directory. The default value is **0**.| **Example** ```js fs.moveFileSync(srcPath, destPath, 0); console.info("move file succeed"); ``` ## fs.mkdtemp mkdtemp(prefix: string): Promise<string> Creates a temporary directory. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | prefix | string | Yes | A randomly generated string used to replace "XXXXXX" in a directory.| **Return value** | Type | Description | | --------------------- | ---------- | | Promise<string> | Promise used to return the unique directory generated.| **Example** ```js fs.mkdtemp(pathDir + "/XXXXXX").then((pathDir) => { console.info("mkdtemp succeed:" + pathDir); }).catch((err) => { console.info("mkdtemp failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.mkdtemp mkdtemp(prefix: string, callback: AsyncCallback<string>): void Creates a temporary directory. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | --------------------------- | ---- | --------------------------- | | prefix | string | Yes | A randomly generated string used to replace "XXXXXX" in a directory.| | callback | AsyncCallback<string> | Yes | Callback invoked when a temporary directory is created asynchronously. | **Example** ```js fs.mkdtemp(pathDir + "/XXXXXX", (err, res) => { if (err) { console.info("mkdtemp failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("mkdtemp success"); } }); ``` ## fs.mkdtempSync mkdtempSync(prefix: string): string Synchronously creates a temporary directory. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------------------- | | prefix | string | Yes | A randomly generated string used to replace "XXXXXX" in a directory.| **Return value** | Type | Description | | ------ | ---------- | | string | Unique path generated.| **Example** ```js let res = fs.mkdtempSync(pathDir + "/XXXXXX"); ``` ## fs.createStream createStream(path: string, mode: string): Promise<Stream> Opens a file stream based on the file path. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox. | | mode | string | Yes | - **r**: Open a file for reading. The file must exist.
- **r+**: Open a file for both reading and writing. The file must exist.
- **w**: Open a file for writing. If the file exists, clear its content. If the file does not exist, create a file.
- **w+**: Open a file for both reading and writing. If the file exists, clear its content. If the file does not exist, create a file.
- **a**: Open a file in append mode for writing at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).
- **a+**: Open a file in append mode for reading or updating at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).| **Return value** | Type | Description | | --------------------------------- | --------- | | Promise<[Stream](#stream)> | Promise used to return the result.| **Example** ```js let filePath = pathDir + "/test.txt"; fs.createStream(filePath, "r+").then((stream) => { console.info("Stream created"); }).catch((err) => { console.info("createStream failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.createStream createStream(path: string, mode: string, callback: AsyncCallback<Stream>): void Opens a file stream based on the file path. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | --------------------------------------- | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox. | | mode | string | Yes | - **r**: Open a file for reading. The file must exist.
- **r+**: Open a file for both reading and writing. The file must exist.
- **w**: Open a file for writing. If the file exists, clear its content. If the file does not exist, create a file.
- **w+**: Open a file for both reading and writing. If the file exists, clear its content. If the file does not exist, create a file.
- **a**: Open a file in append mode for writing at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).
- **a+**: Open a file in append mode for reading or updating at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).| | callback | AsyncCallback<[Stream](#stream)> | Yes | Callback invoked when the stream is open asynchronously. | **Example** ```js let filePath = pathDir + "/test.txt"; fs.createStream(filePath, "r+", (err, stream) => { if (err) { console.info("create stream failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("create stream success"); } }); ``` ## fs.createStreamSync createStreamSync(path: string, mode: string): Stream Synchronously opens a stream based on the file path. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name| Type | Mandatory| Description | | ------ | ------ | ---- | ------------------------------------------------------------ | | path | string | Yes | Path of the file in the application sandbox. | | mode | string | Yes | - **r**: Open a file for reading. The file must exist.
- **r+**: Open a file for both reading and writing. The file must exist.
- **w**: Open a file for writing. If the file exists, clear its content. If the file does not exist, create a file.
- **w+**: Open a file for both reading and writing. If the file exists, clear its content. If the file does not exist, create a file.
- **a**: Open a file in append mode for writing at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).
- **a+**: Open a file in append mode for reading or updating at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).| **Return value** | Type | Description | | ------------------ | --------- | | [Stream](#stream) | Stream opened.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss = fs.createStreamSync(filePath, "r+"); ``` ## fs.fdopenStream fdopenStream(fd: number, mode: string): Promise<Stream> Opens a file stream based on the file descriptor. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | mode | string | Yes | - **r**: Open a file for reading. The file must exist.
- **r+**: Open a file for both reading and writing. The file must exist.
- **w**: Open a file for writing. If the file exists, clear its content. If the file does not exist, create a file.
- **w+**: Open a file for both reading and writing. If the file exists, clear its content. If the file does not exist, create a file.
- **a**: Open a file in append mode for writing at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).
- **a+**: Open a file in append mode for reading or updating at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).| **Return value** | Type | Description | | --------------------------------- | --------- | | Promise<[Stream](#stream)> | Promise used to return the result.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath); fs.fdopenStream(file.fd, "r+").then((stream) => { console.info("Stream opened"); fs.closeSync(file); }).catch((err) => { console.info("openStream failed with error message: " + err.message + ", error code: " + err.code); }); ``` ## fs.fdopenStream fdopenStream(fd: number, mode: string, callback: AsyncCallback<Stream>): void Opens a file stream based on the file descriptor. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | mode | string | Yes | - **r**: Open a file for reading. The file must exist.
- **r+**: Open a file for both reading and writing. The file must exist.
- **w**: Open a file for writing. If the file exists, clear its content. If the file does not exist, create a file.
- **w+**: Open a file for both reading and writing. If the file exists, clear its content. If the file does not exist, create a file.
- **a**: Open a file in append mode for writing at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).
- **a+**: Open a file in append mode for reading or updating at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).| | callback | AsyncCallback<[Stream](#stream)> | Yes | Callback invoked when the stream is open asynchronously. | **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY); fs.fdopenStream(file.fd, "r+", (err, stream) => { if (err) { console.info("fdopen stream failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("fdopen stream success"); fs.closeSync(file); } }); ``` ## fs.fdopenStreamSync fdopenStreamSync(fd: number, mode: string): Stream Synchronously opens a stream based on the file descriptor. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ---------------------------------------- | | fd | number | Yes | FD of the file. | | mode | string | Yes | - **r**: Open a file for reading. The file must exist.
- **r+**: Open a file for both reading and writing. The file must exist.
- **w**: Open a file for writing. If the file exists, clear its content. If the file does not exist, create a file.
- **w+**: Open a file for both reading and writing. If the file exists, clear its content. If the file does not exist, create a file.
- **a**: Open a file in append mode for writing at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).
- **a+**: Open a file in append mode for reading or updating at the end of the file. If the file does not exist, create a file. If the file exists, write data to the end of the file (the original content of the file is reserved).| **Return value** | Type | Description | | ------------------ | --------- | | [Stream](#stream) | Stream opened.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY | fs.OpenMode.CREATE); let ss = fs.fdopenStreamSync(file.fd, "r+"); fs.closeSync(file); ``` ## fs.createWatcher10+ createWatcher(path: string, events: number, listener: WatchEventListener): Watcher Creates a **Watcher** object to observe file or directory changes. **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ---------------------------------------- | | path | string | Yes | Path of the file or directory to observe in the application sandbox. | | events | number | Yes | Events to observe. Multiple events can be separated|by a bitwise OR operator (|).
- **0x1: IN_ACCESS**: A file is accessed.
- **0x2: IN_MODIFY**: The file content is modified.
- **0x4: IN_ATTRIB**: Metadata is changed.
- **0x8: IN_CLOSE_WRITE**: The file opened for writing is closed.
- **0x10: IN_CLOSE_NOWRITE**: The file or directory not opened for writing is closed.
- **0x20: IN_OPEN**: A file or directory is opened.
- **0x40: IN_MOVED_FROM**: A file in the observed directory is moved.
- **0x80: IN_MOVED_TO**: A file is moved to the observed directory.
- **0x100: IN_CREATE**: A file or directory is created in the observed directory.
- **0x200: IN_DELETE**: A file or directory is deleted form the observed directory.
- **0x400: IN_DELETE_SELF**: The observed directory is deleted. After the directory is deleted, the listening stops.
- **0x800: IN_MOVE_SELF**: The observed file or directory is moved. After the file or directory is moved, the listening continues.
- **0xfff: IN_ALL_EVENTS**: All events.| | listener | WatchEventListener | Yes | Callback invoked when an observed event occurs. The callback will be invoked each time an observed event occurs. | **Return value** | Type | Description | | ------------------ | --------- | | [Watcher](#watcher10) | **Watcher** object created.| **Example** ```js let filePath = pathDir + "/test.txt"; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); let watcher = fs.createWatcher(filePath, 0x2 | 0x10, (watchEvent) => { if (watchEvent.event == 0x2) { console.info(watchEvent.fileName + 'was modified'); } else if (watchEvent.event == 0x10) { console.info(watchEvent.fileName + 'was closed'); } }); watcher.start(); fs.writeSync(file.fd, 'test'); fs.closeSync(file); watcher.stop(); ``` ## WatchEventListener10+ (event: WatchEvent): void Called when an observed event occurs. **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ---- | ------ | ---- | ---------------------------------------- | | event | WatchEvent | Yes | Event for the callback to invoke. | ## WatchEvent10+ Defines the event to observe. **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.File.FileIO | Name | Type | Readable | Writable | Description | | ---- | ------ | ---- | ---- | ------- | | fileName | string | Yes | No | Name of the file for which the event occurs.| | event | number | Yes | No | Events to observe. For details, see **events** in [createWatcher](#fscreatewatcher10).| | cookie | number | Yes | No | Cookie bound with the event. Currently, only the **IN_MOVED_FROM** and **IN_MOVED_TO** events are supported. The **IN_MOVED_FROM** and **IN_MOVED_TO** events of the same file have the same **cookie** value.| ## Stat Represents detailed file information. Before calling any API of the **Stat()** class, use [stat()](#fsstat) to create a **Stat** instance synchronously or asynchronously. **System capability**: SystemCapability.FileManagement.File.FileIO ### Attributes | Name | Type | Readable | Writable | Description | | ------ | ------ | ---- | ---- | ---------------------------------------- | | ino | number | Yes | No | File ID. Different files on the same device have different **ino**s.| | | mode | number | Yes | No | File permissions. The meaning of each bit is as follows:
- **0o400**: The owner has the read permission on a regular file or a directory entry.
- **0o200**: The owner has the permission to write a regular file or create and delete a directory entry.
- **0o100**: The owner has the permission to execute a regular file or search for the specified path in a directory.
- **0o040**: The user group has the read permission on a regular file or a directory entry.
- **0o020**: The user group has the permission to write a regular file or create and delete a directory entry.
- **0o010**: The user group has the permission to execute a regular file or search for the specified path in a directory.
- **0o004**: Other users have the permission to read a regular file or read a directory entry.
- **0o002**: Other users have the permission to write a regular file or create and delete a directory entry.
- **0o001**: Other users have the permission to execute a regular file or search for the specified path in a directory.| | uid | number | Yes | No | ID of the file owner.| | gid | number | Yes | No | ID of the user group of the file.| | size | number | Yes | No | File size, in bytes. This parameter is valid only for regular files. | | atime | number | Yes | No | Time of the last access to the file. The value is the number of seconds elapsed since 00:00:00 on January 1, 1970. | | mtime | number | Yes | No | Time of the last modification to the file. The value is the number of seconds elapsed since 00:00:00 on January 1, 1970. | | ctime | number | Yes | No | Time of the last status change of the file. The value is the number of seconds elapsed since 00:00:00 on January 1, 1970. | ### isBlockDevice isBlockDevice(): boolean Checks whether this file is a block special file. A block special file supports access by block only, and it is cached when accessed. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------- | ---------------- | | boolean | Whether the file is a block special file.| **Example** ```js let filePath = pathDir + "/test.txt"; let isBLockDevice = fs.statSync(filePath).isBlockDevice(); ``` ### isCharacterDevice isCharacterDevice(): boolean Checks whether this file is a character special file. A character special file supports random access, and it is not cached when accessed. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------- | ----------------- | | boolean | Whether the file is a character special file.| **Example** ```js let filePath = pathDir + "/test.txt"; let isCharacterDevice = fs.statSync(filePath).isCharacterDevice(); ``` ### isDirectory isDirectory(): boolean Checks whether this file is a directory. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------- | ------------- | | boolean | Whether the file is a directory.| **Example** ```js let dirPath = pathDir + "/test"; let isDirectory = fs.statSync(dirPath).isDirectory(); ``` ### isFIFO isFIFO(): boolean Checks whether this file is a named pipe (or FIFO). Named pipes are used for inter-process communication. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------- | --------------------- | | boolean | Whether the file is a FIFO.| **Example** ```js let filePath = pathDir + "/test.txt"; let isFIFO = fs.statSync(filePath).isFIFO(); ``` ### isFile isFile(): boolean Checks whether this file is a regular file. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------- | --------------- | | boolean | Whether the file is a regular file.| **Example** ```js let filePath = pathDir + "/test.txt"; let isFile = fs.statSync(filePath).isFile(); ``` ### isSocket isSocket(): boolean Checks whether this file is a socket. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------- | -------------- | | boolean | Whether the file is a socket.| **Example** ```js let filePath = pathDir + "/test.txt"; let isSocket = fs.statSync(filePath).isSocket(); ``` ### isSymbolicLink isSymbolicLink(): boolean Checks whether this file is a symbolic link. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------- | --------------- | | boolean | Whether the file is a symbolic link.| **Example** ```js let filePath = pathDir + "/test"; let isSymbolicLink = fs.statSync(filePath).isSymbolicLink(); ``` ## Stream Provides file stream management. Before calling any API of the **Stream** class, use **createStream()** to create a **Stream** instance synchronously or asynchronously. ### close close(): Promise<void> Closes the stream. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------------------- | ------------- | | Promise<void> | Promise used to return the stream close result.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.close().then(() => { console.info("File stream closed"); }).catch((err) => { console.info("close fileStream failed with error message: " + err.message + ", error code: " + err.code); }); ``` ### close close(callback: AsyncCallback<void>): void Closes the stream. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ------------------------- | ---- | ------------- | | callback | AsyncCallback<void> | Yes | Callback invoked when the stream is closed asynchronously.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.close((err) => { if (err) { console.info("close stream failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("close stream success"): } }); ``` ### closeSync closeSync(): void Synchronously closes the stream. **System capability**: SystemCapability.FileManagement.File.FileIO **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.closeSync(); ``` ### flush flush(): Promise<void> Flushes the stream. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Return value** | Type | Description | | ------------------- | ------------- | | Promise<void> | Promise used to return the stream flushing result.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.flush().then(() => { console.info("Stream flushed"); }).catch((err) => { console.info("flush failed with error message: " + err.message + ", error code: " + err.code); }); ``` ### flush flush(callback: AsyncCallback<void>): void Flushes the stream. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ------------------------- | ---- | -------------- | | callback | AsyncCallback<void> | Yes | Callback invoked when the stream is asynchronously flushed.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.flush((err) => { if (err) { console.info("flush stream failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("flush success"); } }); ``` ### flushSync flushSync(): void Synchronously flushes the stream. **System capability**: SystemCapability.FileManagement.File.FileIO **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.flushSync(); ``` ### write write(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }): Promise<number> Writes data into the stream. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ------------------------------- | ---- | ---------------------------------------- | | buffer | ArrayBuffer\|string | Yes | Data to write. It can be a string or data from a buffer. | | options | Object | No | The options are as follows:
- **length** (number): length of the data to write. The default value is the buffer length.
- **offset** (number): start position to write the data in the file. This parameter is optional. By default, data is written from the current position.
- **encoding** (string): format of the data to be encoded when the data is a string. The default value is **'utf-8'**, which is the only value supported.| **Return value** | Type | Description | | --------------------- | -------- | | Promise<number> | Promise used to return the length of the data written.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.write("hello, world",{ offset: 5, length: 5, encoding: 'utf-8' }).then((number) => { console.info("write succeed and size is:" + number); }).catch((err) => { console.info("write failed with error message: " + err.message + ", error code: " + err.code); }); ``` ### write write(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }, callback: AsyncCallback<number>): void Writes data into the stream. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------------- | ---- | ------------------------------------------------------------ | | buffer | ArrayBuffer\|string | Yes | Data to write. It can be a string or data from a buffer. | | options | Object | No | The options are as follows:
- **length** (number): length of the data to write. This parameter is optional. The default value is the buffer length.
- **offset** (number): start position to write the data in the file. This parameter is optional. By default, data is written from the current position.
- **encoding** (string): format of the data to be encoded when the data is a string. The default value is **'utf-8'**, which is the only value supported.| | callback | AsyncCallback<number> | Yes | Callback invoked when the data is written asynchronously. | **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath, "r+"); ss.write("hello, world", { offset: 5, length: 5, encoding :'utf-8'}, (err, bytesWritten) => { if (err) { console.info("write stream failed with error message: " + err.message + ", error code: " + err.code); } else { if (bytesWritten) { console.info("write succeed and size is:" + bytesWritten); } } }); ``` ### writeSync writeSync(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }): number Synchronously writes data into the stream. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ------------------------------- | ---- | ---------------------------------------- | | buffer | ArrayBuffer\|string | Yes | Data to write. It can be a string or data from a buffer. | | options | Object | No | The options are as follows:
- **length** (number): length of the data to write. This parameter is optional. The default value is the buffer length.
- **offset** (number): start position to write the data in the file. This parameter is optional. By default, data is written from the current position.
- **encoding** (string): format of the data to be encoded when the data is a string. The default value is **'utf-8'**, which is the only value supported.| **Return value** | Type | Description | | ------ | -------- | | number | Length of the data written in the file.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss= fs.createStreamSync(filePath,"r+"); let num = ss.writeSync("hello, world", {offset: 5, length: 5, encoding :'utf-8'}); ``` ### read read(buffer: ArrayBuffer, options?: { offset?: number; length?: number; }): Promise<number> Reads data from the stream. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ----------- | ---- | ---------------------------------------- | | buffer | ArrayBuffer | Yes | Buffer used to store the file read. | | options | Object | No | The options are as follows:
- **length** (number): length of the data to read. This parameter is optional. The default value is the buffer length.
- **offset** (number): position of the data to read in the file. By default, data is read from the current position.| **Return value** | Type | Description | | ---------------------------------- | ------ | | Promise<number> | Promise used to return the data read.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss = fs.createStreamSync(filePath, "r+"); let buf = new ArrayBuffer(4096); ss.read(buf, {offset: 5, length: 5}).then((readLen) => { console.info("Read data successfully"); console.log(String.fromCharCode.apply(null, new Uint8Array(buf))); }).catch((err) => { console.info("read data failed with error message: " + err.message + ", error code: " + err.code); }); ``` ### read read(buffer: ArrayBuffer, options?: { position?: number; offset?: number; length?: number; }, callback: AsyncCallback<number>): void Reads data from the stream. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | buffer | ArrayBuffer | Yes | Buffer used to store the file read. | | options | Object | No | The options are as follows:
- **length** (number): length of the data to read. This parameter is optional. The default value is the buffer length.
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.| | callback | AsyncCallback<number> | Yes | Callback invoked when data is read asynchronously from the stream. | **Example** ```js let filePath = pathDir + "/test.txt"; let ss = fs.createStreamSync(filePath, "r+"); let buf = new ArrayBuffer(4096) ss.read(buf, {offset: 5, length: 5}, (err, readLen) => { if (err) { console.info("read stream failed with error message: " + err.message + ", error code: " + err.code); } else { console.info("Read data successfully"); console.log(String.fromCharCode.apply(null, new Uint8Array(buf))); } }); ``` ### readSync readSync(buffer: ArrayBuffer, options?: { offset?: number; length?: number; }): number Synchronously reads data from the stream. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ----------- | ---- | ---------------------------------------- | | buffer | ArrayBuffer | Yes | Buffer used to store the file read. | | options | Object | No | The options are as follows:
- **length** (number): length of the data to read. This parameter is optional. The default value is the buffer length.
- **offset** (number): position of the data to read in the file. This parameter is optional. By default, data is read from the current position.
| **Return value** | Type | Description | | ------ | -------- | | number | Length of the data read.| **Example** ```js let filePath = pathDir + "/test.txt"; let ss = fs.createStreamSync(filePath, "r+"); let num = ss.readSync(new ArrayBuffer(4096), {offset: 5, length: 5}); ``` ## File Represents a **File** object opened by **open()**. **System capability**: SystemCapability.FileManagement.File.FileIO ### Attributes | Name | Type | Readable | Writable | Description | | ---- | ------ | ---- | ---- | ------- | | fd | number | Yes | No | FD of the file.| ### lock lock(exclusive?: boolean): Promise; Applies an exclusive lock or a shared lock on this file in blocking mode. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ----------- | ---- | ---------------------------------------- | | exclusive | boolean | No | Lock to apply. The value **true** means an exclusive lock, and the value **false** (default) means a shared lock. | **Return value** | Type | Description | | ---------------------------------- | ------ | | Promise<void> | Promise that returns no value.| **Example** ```js let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); file.lock(true).then(() => { console.log("lock file successful"); }).catch((err) => { console.info("lock file failed with error message: " + err.message + ", error code: " + err.code); }); ``` ### lock lock(exclusive?: boolean, callback: AsyncCallback): void; Applies an exclusive lock or a shared lock on this file in blocking mode. This API uses a promise to return the result. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ----------- | ---- | ---------------------------------------- | | exclusive | boolean | No | Lock to apply. The value **true** means an exclusive lock, and the value **false** (default) means a shared lock. | | callback | AsyncCallback<void> | Yes | Callback invoked when the file is locked. | **Example** ```js let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); file.lock(true, (err) => { if (err) { console.info("lock file failed with error message: " + err.message + ", error code: " + err.code); } else { console.log("lock file successful"); } }); ``` ### tryLock tryLock(exclusive?: boolean): void; Applies an exclusive lock or a shared lock on this file in non-blocking mode. **System capability**: SystemCapability.FileManagement.File.FileIO **Parameters** | Name | Type | Mandatory | Description | | ------- | ----------- | ---- | ---------------------------------------- | | exclusive | boolean | No | Lock to apply. The value **true** means an exclusive lock, and the value **false** (default) means a shared lock. | **Example** ```js let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); file.tryLock(true); console.log("lock file successful"); ``` ### unlock unlock(): void; Unlocks this file synchronously. **System capability**: SystemCapability.FileManagement.File.FileIO **Example** ```js let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); file.tryLock(true); file.unlock(); console.log("unlock file successful"); ``` ## Watcher10+ Provides APIs for file or directory listening. Before using the APIs of **Watcher** , call **createWatcher()** to create a **Watcher** object. ### start10+ start(): void Starts file or directory listening. **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.File.FileIO **Example** ```js let filePath = pathDir + "/test.txt"; let watcher = fs.createWatcher(filePath, 0xfff, () => {}); watcher.start(); watcher.stop(); ``` ### stop10+ stop(): void Stops file or directory listening. **System API**: This is a system API. **System capability**: SystemCapability.FileManagement.File.FileIO **Example** ```js let filePath = pathDir + "/test.txt"; let watcher = fs.createWatcher(filePath, 0xfff, () => {}); watcher.start(); watcher.stop(); ``` ## OpenMode Defines the constants of the **mode** parameter used in **open()**. It species the mode for opening a file. **System capability**: SystemCapability.FileManagement.File.FileIO | Name | Type | Value | Description | | ---- | ------ |---- | ------- | | READ_ONLY | number | 0o0 | Open the file in read-only mode.| | WRITE_ONLY | number | 0o1 | Open the file in write-only mode.| | READ_WRITE | number | 0o2 | Open the file in read/write mode.| | CREATE | number | 0o100 | Create a file if the specified file does not exist.| | TRUNC | number | 0o1000 | If the file exists and is open in write-only or read/write mode, truncate the file length to 0.| | APPEND | number | 0o2000 | Open the file in append mode. New data will be written to the end of the file.| | NONBLOCK | number | 0o4000 | If **path** points to a named pipe (FIFO), block special file, or character special file, perform non-blocking operations on the open file and in subsequent I/Os.| | DIR | number | 0o200000 | If **path** does not point to a directory, throw an exception.| | NOFOLLOW | number | 0o400000 | If **path** points to a symbolic link, throw an exception.| | SYNC | number | 0o4010000 | Open the file in synchronous I/O mode.| ## Filter **System capability**: SystemCapability.FileManagement.File.FileIO Defines the file filtering configuration, which can be used by **listFile()**. | Name | Type | Description | | ----------- | --------------- | ------------------ | | suffix | Array<string> | Locate files that fully match the specified file name extensions, which are of the OR relationship. | | displayName | Array<string> | Locate files that fuzzy match the specified file names, which are of the OR relationship.| | mimeType | Array<string> | Locate files that fully match the specified MIME types, which are of the OR relationship. | | fileSizeOver | number | Locate files that are greater than or equal to the specified size. | | lastModifiedAfter | number | Locate files whose last modification time is the same or later than the specified time. | | excludeMedia | boolean | Whether to exclude the files already in **Media**. |