diff --git a/zh-cn/application-dev/reference/apis/js-apis-file-fs.md b/zh-cn/application-dev/reference/apis/js-apis-file-fs.md index 739626ab5fbde9c45250155d5f67e905033cc8f2..5420c5f6f553a62ba1e721d7b88fdd7e04c451c6 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-file-fs.md +++ b/zh-cn/application-dev/reference/apis/js-apis-file-fs.md @@ -2285,6 +2285,111 @@ mkdtempSync(prefix: string): string let res = fs.mkdtempSync(pathDir + "/XXXXXX"); ``` + +## fs.createRandomAccessFile10+ + +createRandomAccessFile(file: string|File, mode?: string): Promise<RandomAccessFile> + +基于文件路径或文件对象创建RandomAccessFile文件对象,使用Promise异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | ------ | ------ | ------------------------------------------------------------ | +| file | string\|[File](#file) | 是 | 文件的应用沙箱路径或已打开的File对象 | +| mode | number | 否 | 创建文件RandomAccessFile对象的[选项](#openmode),仅当传入文件沙箱路径时生效,必须指定如下选项中的一个,默认以只读方式创建:
- OpenMode.READ_ONLY(0o0):只读创建。
- OpenMode.WRITE_ONLY(0o1):只写创建。
- OpenMode.READ_WRITE(0o2):读写创建。
给定如下功能选项,以按位或的方式追加,默认不给定任何额外选项:
- OpenMode.CREATE(0o100):若文件不存在,则创建文件。
- OpenMode.TRUNC(0o1000):如果RandomAccessFile对象存在且以只写或读写的方式创建文件,则将其长度裁剪为零。
- OpenMode.APPEND(0o2000):以追加方式打开,后续写将追加到RandomAccessFile对象末尾。
- OpenMode.NONBLOCK(0o4000):如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。
- OpenMode.DIR(0o200000):如果path不指向目录,则出错。
- OpenMode.NOFOLLOW(0o400000):如果path指向符号链接,则出错。
- OpenMode.SYNC(0o4010000):以同步IO的方式创建RandomAccessFile对象。 | + +**返回值:** + + | 类型 | 说明 | + | --------------------------------- | --------- | + | Promise<[RandomAccessFile](#randomaccessfile)> | Promise对象。返回RandomAccessFile文件对象的结果。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); + fs.createRandomAccessFile(file).then((randomAccessFile) => { + console.info("randomAccessFile fd: " + randomAccessFile.fd); + }).catch((err) => { + console.info("create randomAccessFile failed with error message: " + err.message + ", error code: " + err.code); + }); + ``` + + +## fs.createRandomAccessFile10+ + +createRandomAccessFile(file: string|File, mode?: string, callback: AsyncCallback<RandomAccessFile>): void + +基于文件路径或文件对象创建RandomAccessFile文件对象,使用callback异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | ------ | ------ | ------------------------------------------------------------ | +| file | string\|[File](#file) | 是 | 文件的应用沙箱路径或已打开的File对象 | +| mode | number | 否 | 创建文件RandomAccessFile对象的[选项](#openmode),仅当传入文件沙箱路径时生效,必须指定如下选项中的一个,默认以只读方式创建:
- OpenMode.READ_ONLY(0o0):只读创建。
- OpenMode.WRITE_ONLY(0o1):只写创建。
- OpenMode.READ_WRITE(0o2):读写创建。
给定如下功能选项,以按位或的方式追加,默认不给定任何额外选项:
- OpenMode.CREATE(0o100):若文件不存在,则创建文件。
- OpenMode.TRUNC(0o1000):如果RandomAccessFile对象存在且以只写或读写的方式创建文件,则将其长度裁剪为零。
- OpenMode.APPEND(0o2000):以追加方式打开,后续写将追加到RandomAccessFile对象末尾。
- OpenMode.NONBLOCK(0o4000):如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。
- OpenMode.DIR(0o200000):如果path不指向目录,则出错。
- OpenMode.NOFOLLOW(0o400000):如果path指向符号链接,则出错。
- OpenMode.SYNC(0o4010000):以同步IO的方式创建RandomAccessFile对象。 | +| callback | AsyncCallback<[RandomAccessFile](#randomaccessfile)> | 是 | 异步创建RandomAccessFile对象之后的回调。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + ```js + let filePath = pathDir + "/test.txt"; + let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); + fs.createRandomAccessFile(file, (err, randomAccessFile) => { + if (err) { + console.info("create randomAccessFile failed with error message: " + err.message + ", error code: " + err.code); + } else { + console.info("randomAccessFilefile fd: " + randomAccessFile.fd); + } + }); + ``` + + +## fs.createRandomAccessFileSync10+ + +createRandomAccessFileSync(file: string|File, , mode?: string): RandomAccessFile + +基于文件路径或文件对象创建RandomAccessFile文件对象。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | ------ | ------ | ------------------------------------------------------------ | +| file | string\|[File](#file) | 是 | 文件的应用沙箱路径或已打开的File对象 | +| mode | number | 否 | 创建文件RandomAccessFile对象的[选项](#openmode),仅当传入文件沙箱路径时生效,必须指定如下选项中的一个,默认以只读方式创建:
- OpenMode.READ_ONLY(0o0):只读创建。
- OpenMode.WRITE_ONLY(0o1):只写创建。
- OpenMode.READ_WRITE(0o2):读写创建。
给定如下功能选项,以按位或的方式追加,默认不给定任何额外选项:
- OpenMode.CREATE(0o100):若文件不存在,则创建文件。
- OpenMode.TRUNC(0o1000):如果RandomAccessFile对象存在且以只写或读写的方式创建文件,则将其长度裁剪为零。
- OpenMode.APPEND(0o2000):以追加方式打开,后续写将追加到RandomAccessFile对象末尾。
- OpenMode.NONBLOCK(0o4000):如果path指向FIFO、块特殊文件或字符特殊文件,则本次打开及后续 IO 进行非阻塞操作。
- OpenMode.DIR(0o200000):如果path不指向目录,则出错。
- OpenMode.NOFOLLOW(0o400000):如果path指向符号链接,则出错。
- OpenMode.SYNC(0o4010000):以同步IO的方式创建RandomAccessFile对象。 | + +**返回值:** + + | 类型 | 说明 | + | ------------------ | --------- | + | [RandomAccessFile](#randomaccessfile) | 返回RandomAccessFile文件对象的结果。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let file = fs.openSync(filePath, fileIO.OpenMode.CREATE | fileIO.OpenMode.READ_WRITE); + let randomaccessfile = fileIO.createRandomAccessFileSync(file); + ``` + ## fs.createStream createStream(path: string, mode: string): Promise<Stream> @@ -3273,6 +3378,284 @@ unlock(): void console.log("unlock file successful"); ``` + +## RandomAccessFile + +随机读写文件流,在调用RandomAccessFile的方法前,需要先通过createRandomAccess()方法(同步或异步)来构建一个RandomAccessFile实例。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +### 属性 + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------- | ------ | ---- | ----- | ---------------- | +| fd | number | 是 | 否 | 打开的文件描述符。 | +| filePointer | number | 是 | 是 | RandomAccessFile对象的偏置指针。 | + +### setFilePointer10+ + +setFilePointer(): void + +设置文件偏置指针 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let randomAccessFile = fs.createRandomAccessFileSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + randomAccessFile.setFilePointer(1); + ``` + + +### close10+ + +close(): void + +同步关闭RandomAccessFile对象。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let randomAccessFile = fs.createRandomAccessFileSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + randomAccessFile.closeSync(); + ``` + +### write10+ + +write(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }): Promise<number> + +将数据写入文件,使用Promise异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | ------------------------------- | ---- | ---------------------------------------- | + | buffer | ArrayBuffer\|string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | + | options | Object | 否 | 支持如下选项:
- length,number类型,表示期望写入数据的长度。默认缓冲区长度。
- offset,number类型,表示期望写入文件位置(基于当前filePointer加上offset的位置)。可选,默认从偏置指针(filePointer)开始写。
- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。| + +**返回值:** + + | 类型 | 说明 | + | --------------------- | -------- | + | Promise<number> | Promise对象。返回实际写入的长度。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let file = fs.openSync(fpath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); + let randomaccessfile = fs.createRandomAccessFileSync(file); + let bufferLength = 4096; + randomaccessfile.write(new ArrayBuffer(bufferLength), { offset: 1, length: 5 }).then((bytesWritten) => { + console.info("randomAccessFile bytesWritten: " + bytesWritten); + }).catch((err) => { + console.info("create randomAccessFile failed with error message: " + err.message + ", error code: " + err.code); + }); + + ``` + +### write10+ + +write(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }, callback: AsyncCallback<number>): void + +将数据写入文件,使用callback异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------------- | ---- | ------------------------------------------------------------ | + | buffer | ArrayBuffer\|string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | + | options | Object | 否 | 支持如下选项:
- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度。
- offset,number类型,表示期望写入文件位置(基于当前filePointer加上offset的位置)。可选,默认从偏置指针(filePointer)开始写。
- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。| + | callback | AsyncCallback<number> | 是 | 异步写入完成后执行的回调函数。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let randomAccessFile = fs.createRandomAccessFileSync(file); + let bufferLength = 4096; + randomAccessFile.write(new ArrayBuffer(bufferLength), { offset: 1 }, function(err, bytesWritten) { + if (err) { + console.info("write failed with error message: " + err.message + ", error code: " + err.code); + } else { + if (bytesWritten) { + console.info("write succeed and size is:" + bytesWritten); + } + } + }); + ``` + +### writeSync10+ + +writeSync(buffer: ArrayBuffer|string, options?: { offset?: number; length?: number; encoding?: string; }): number + +以同步方法将数据写入文件。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | ------------------------------- | ---- | ---------------------------------------- | + | buffer | ArrayBuffer\|string | 是 | 待写入文件的数据,可来自缓冲区或字符串。 | + | options | Object | 否 | 支持如下选项:
- length,number类型,表示期望写入数据的长度。可选,默认缓冲区长度。
- offset,number类型,表示期望写入文件位置(基于当前filePointer加上offset的位置)。可选,默认从偏置指针(filePointer)开始写。
- encoding,string类型,当数据是string类型时有效,表示数据的编码方式,默认 'utf-8'。仅支持 'utf-8'。| + +**返回值:** + + | 类型 | 说明 | + | ------ | -------- | + | number | 实际写入的长度。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let randomaccessfile= fs.createRandomAccessFileSync(filePath,"r+"); + let bytesWritten = randomaccessfile.writeSync("hello, world", {offset: 5, length: 5, encoding :'utf-8'}); + ``` + +### read10+ + +read(buffer: ArrayBuffer, options?: { offset?: number; length?: number; }): Promise<number> + +从文件读取数据,使用Promise异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | ----------- | ---- | ---------------------------------------- | + | buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 | + | options | Object | 否 | 支持如下选项:
- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度。
- offset,number类型,表示期望读取文件位置(基于当前filePointer加上offset的位置)。可选,默认从偏置指针(filePointer)开始读。 | + +**返回值:** + + | 类型 | 说明 | + | ---------------------------------- | ------ | + | Promise<number> | Promise对象。返回读取的结果。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); + let randomaccessfile = fs.createRandomAccessFileSync(file); + let bufferLength = 4096; + randomaccessfile.read(new ArrayBuffer(bufferLength), { offset: 1, length: 5 }).then((readLength) => { + console.info("randomAccessFile readLength: " + readLength); + }).catch((err) => { + console.info("create randomAccessFile failed with error message: " + err.message + ", error code: " + err.code); + }); + ``` + +### read10+ + +read(buffer: ArrayBuffer, options?: { position?: number; offset?: number; length?: number; }, callback: AsyncCallback<number>): void + +从文件读取数据,使用callback异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ---------------------------------------- | ---- | ---------------------------------------- | + | buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 | + | options | Object | 否 | 支持如下选项:
- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度。
- offset,number类型,表示期望读取文件位置(基于当前filePointer加上offset的位置)。可选,默认从偏置指针(filePointer)开始读. | + | callback | AsyncCallback<number> | 是 | 异步从流文件读取数据之后的回调。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); + let randomaccessfile = await fileIO.createRandomAccessFile(file); + let length = 20; + randomaccessfile.read(new ArrayBuffer(length), { offset: 1, length: 5 }, function (err, readLength) { + if (err) { + console.info("read failed with error message: " + err.message + ", error code: " + err.code); + } else { + if (readLength) { + console.info("read succeed and size is:" + readLength); + } + } + }); + ``` + +### readSync10+ + +readSync(buffer: ArrayBuffer, options?: { offset?: number; length?: number; }): number + +以同步方法从文件读取数据。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | ----------- | ---- | ---------------------------------------- | + | buffer | ArrayBuffer | 是 | 用于读取文件的缓冲区。 | + | options | Object | 否 | 支持如下选项:
- length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度。
- offset,number类型,表示期望读取文文件位置(基于当前filePointer加上offset的位置)。可选,默认从偏置指针(filePointer)开始读。
| + +**返回值:** + + | 类型 | 说明 | + | ------ | -------- | + | number | 实际读取的长度。 | + +**错误码:** + +接口抛出错误码的详细介绍请参见[基础文件IO错误码](../errorcodes/errorcode-filemanagement.md#基础文件io错误码)。 + +**示例:** + + ```js + let filePath = pathDir + "/test.txt"; + let file = fs.openSync(filePath, fileIO.OpenMode.CREATE | fileIO.OpenMode.READ_WRITE); + let randomaccessfile = fs.createRandomAccessFileSync(file); + let length = 4096; + let readLength = randomaccessfile.readSync(new ArrayBuffer(length)); + ``` + + ## Watcher10+ 文件目录变化监听对象。由createWatcher接口获得。