📜  Node.js fs.read() 方法(1)

📅  最后修改于: 2023-12-03 15:17:54.462000             🧑  作者: Mango

Node.js fs.read() 方法

简介

Node.js 中的fs.read()方法用于从指定文件中读取数据。它是文件系统模块(fs)中的一部分,支持异步和同步两种方式。

语法

异步方式:

fs.read(fd, buffer, offset, length, position, callback)

同步方式:

fs.readSync(fd, buffer, offset, length, position)
参数

参数说明如下:

  • fd:文件描述符
  • buffer:读取数据的缓冲区
  • offset:缓冲区写入的偏移量
  • length:读取的字节数
  • position:文件读取的起始位置
  • callback:读取完成后的回调函数(仅适用于异步方式)
返回值

fs.read()方法的返回值是与读取字节数相等的字节数。如果读取到文件末尾,返回的字节数将小于请求的字节数。

示例

下面分别展示异步和同步方式下使用fs.read()方法的示例。

异步方式:
const fs = require('fs');
const bufferSize = 1024;
const buffer = Buffer.alloc(bufferSize);

fs.open('file.txt', 'r', (err, fd) => {
  if (err) throw err;
  fs.read(fd, buffer, 0, bufferSize, 0, (err, bytesRead, buffer) => {
    if (err) throw err;
    console.log(`Read ${bytesRead} bytes from file.`);
    console.log(buffer.slice(0, bytesRead).toString());
  });
});

输出如下:

Read 11 bytes from file.
Hello, Node!
同步方式:
const fs = require('fs');
const bufferSize = 1024;
const buffer = Buffer.alloc(bufferSize);

try {
  const fd = fs.openSync('file.txt', 'r');
  const bytesRead = fs.readSync(fd, buffer, 0, bufferSize, 0);
  console.log(`Read ${bytesRead} bytes from file.`);
  console.log(buffer.slice(0, bytesRead).toString());
} catch (err) {
  console.error(err);
}

输出如下:

Read 11 bytes from file.
Hello, Node!
注意事项
  • 文件描述符可以是通过调用fs.open()fs.openSync()方法返回的值。
  • 在异步方式下,读取完成后,fs.read()方法会自动关闭文件描述符。在同步方式下,需要手动调用fs.closeSync()方法关闭文件描述符。
  • 如果读取到文件末尾,没有读取到请求的字节数,则重复读取将导致返回值为0。