文件读取数据
2024-12-04 15:57:51
297次阅读
0个评论
fs.read(Promise异步返回)
read(fd: number, buffer: ArrayBuffer, options?: ReadOptions): Promise
从文件读取数据,使用Promise异步返回。
原子化服务API:从API version 11开始,该接口支持在原子化服务中使用。
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| fd | number | 是 | 已打开的文件描述符。 | 
| buffer | ArrayBuffer | 是 | 用于保存读取到的文件数据的缓冲区。 | 
| options | ReadOptions | 否 | 支持如下选项: - offset,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 - length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度。 | 
返回值:
| 类型 | 说明 | 
|---|---|
| Promise | Promise对象。返回实际读取的数据长度,单位字节。 | 
错误码:
接口抛出错误码的详细介绍请参见基础文件IO错误码。
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { buffer } from '@kit.ArkTS';
let filePath = pathDir + "/test.txt";
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE);
let arrayBuffer = new ArrayBuffer(4096);
fs.read(file.fd, arrayBuffer).then((readLen: number) => {
  console.info("read file data succeed");
  let buf = buffer.from(arrayBuffer, 0, readLen);
  console.info(`The content of file: ${buf.toString()}`);
}).catch((err: BusinessError) => {
  console.error("read file data failed with error message: " + err.message + ", error code: " + err.code);
}).finally(() => {
  fs.closeSync(file);
});
fs.read(Callback异步返回)
read(fd: number, buffer: ArrayBuffer, options?: ReadOptions, callback: AsyncCallback): void
从文件读取数据,使用callback异步回调。
原子化服务API:从API version 11开始,该接口支持在原子化服务中使用。
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| fd | number | 是 | 已打开的文件描述符。 | 
| buffer | ArrayBuffer | 是 | 用于保存读取到的文件数据的缓冲区。 | 
| options | ReadOptions | 否 | 支持如下选项: - offset,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 - length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度。 | 
| callback | AsyncCallback | 是 | 异步读取数据之后的回调。返回实际读取的数据长度,单位字节。 | 
错误码:
接口抛出错误码的详细介绍请参见基础文件IO错误码。
示例:
import { BusinessError } from '@kit.BasicServicesKit';
import { buffer } from '@kit.ArkTS';
let filePath = pathDir + "/test.txt";
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE);
let arrayBuffer = new ArrayBuffer(4096);
fs.read(file.fd, arrayBuffer, (err: BusinessError, readLen: number) => {
  if (err) {
    console.error("read failed with error message: " + err.message + ", error code: " + err.code);
  } else {
    console.info("read file data succeed");
    let buf = buffer.from(arrayBuffer, 0, readLen);
    console.info(`The content of file: ${buf.toString()}`);
  }
  fs.closeSync(file);
});
fs.readSync(同步)
readSync(fd: number, buffer: ArrayBuffer, options?: ReadOptions): number
以同步方法从文件读取数据。
原子化服务API:从API version 11开始,该接口支持在原子化服务中使用。
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| fd | number | 是 | 已打开的文件描述符。 | 
| buffer | ArrayBuffer | 是 | 用于保存读取到的文件数据的缓冲区。 | 
| options | ReadOptions | 否 | 支持如下选项: - offset,number类型,表示期望读取文件的位置。可选,默认从当前位置开始读。 - length,number类型,表示期望读取数据的长度。可选,默认缓冲区长度。 | 
返回值:
| 类型 | 说明 | 
|---|---|
| number | 返回实际读取的数据长度,单位字节。 | 
错误码:
接口抛出错误码的详细介绍请参见基础文件IO错误码。
示例:
let filePath = pathDir + "/test.txt";
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE);
let buf = new ArrayBuffer(4096);
fs.readSync(file.fd, buf);
fs.closeSync(file);
00

