fs.readFile(path[, options], callback)


异步地读取文件的全部内容。

¥Asynchronously reads the entire contents of a file.

import { readFile } from 'node:fs';

readFile('/etc/passwd', (err, data) => {
  if (err) throw err;
  console.log(data);
}); 

回调传入了两个参数 (err, data),其中 data 是文件的内容。

¥The callback is passed two arguments (err, data), where data is the contents of the file.

如果未指定编码,则返回原始缓冲区。

¥If no encoding is specified, then the raw buffer is returned.

如果 options 是字符串,则它指定编码:

¥If options is a string, then it specifies the encoding:

import { readFile } from 'node:fs';

readFile('/etc/passwd', 'utf8', callback); 

当路径是目录时,fs.readFile()fs.readFileSync() 的行为是特定于平台的。在 macOS、Linux 和 Windows 上,将返回错误。在 FreeBSD 上,将返回目录内容的表示。

¥When the path is a directory, the behavior of fs.readFile() and fs.readFileSync() is platform-specific. On macOS, Linux, and Windows, an error will be returned. On FreeBSD, a representation of the directory's contents will be returned.

import { readFile } from 'node:fs';

// macOS, Linux, and Windows
readFile('<directory>', (err, data) => {
  // => [Error: EISDIR: illegal operation on a directory, read <directory>]
});

//  FreeBSD
readFile('<directory>', (err, data) => {
  // => null, <data>
}); 

可以使用 AbortSignal 中止正在进行的请求。如果请求被中止,回调将被使用 AbortError 调用:

¥It is possible to abort an ongoing request using an AbortSignal. If a request is aborted the callback is called with an AbortError:

import { readFile } from 'node:fs';

const controller = new AbortController();
const signal = controller.signal;
readFile(fileInfo[0].name, { signal }, (err, buf) => {
  // ...
});
// When you want to abort the request
controller.abort(); 

fs.readFile() 函数缓冲整个文件。为了最小化内存成本,在可能的情况下优先通过 fs.createReadStream() 进行流式传输。

¥The fs.readFile() function buffers the entire file. To minimize memory costs, when possible prefer streaming via fs.createReadStream().

中止正在进行的请求不会中止单个操作系统请求,而是中止内部缓冲的 fs.readFile 执行。

¥Aborting an ongoing request does not abort individual operating system requests but rather the internal buffering fs.readFile performs.