当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js fs.createReadStream(path[, options])用法及代码示例


fs.createReadStream(path[, options])

历史
版本变化
v16.10.0

如果提供了fd,则fs 选项不需要open 方法。

v16.10.0

如果 autoClosefalse ,则 fs 选项不需要 close 方法。

v15.4.0

fd 选项接受 FileHandle 参数。

v14.0.0

emitClose 默认更改为 true

v13.6.0、v12.17.0

fs 选项允许覆盖使用的 fs 实现。

v12.10.0

启用emitClose 选项。

v11.0.0

startend 施加新的限制,在我们无法合理处理输入值的情况下抛出更合适的错误。

v7.6.0

path 参数可以是使用 file: 协议的 WHATWG URL 对象。

v7.0.0

传递的options 对象永远不会被修改。

v2.3.0

传递的options 对象现在可以是字符串。

v0.1.31

添加于:v0.1.31


参数

<stream.Readable> 的 16 KiB 默认 highWaterMark 不同,此方法返回的流的默认 highWaterMark 为 64 KiB。

options 可以包含 startend 值,以从文件而不是整个文件中读取字节范围。 startend 都包含在内并从 0 开始计数,允许的值在 [0, Number.MAX_SAFE_INTEGER ] 范围内。如果指定了 fd 并且省略了 startundefined ,则 fs.createReadStream() 从当前文件位置开始顺序读取。 encoding 可以是 <Buffer> 接受的任何一种。

如果指定了fd,则ReadStream 将忽略path 参数并使用指定的文件说明符。这意味着不会发出 'open' 事件。 fd 应该是阻塞的;非阻塞 fd 应该传递给 <net.Socket>

如果fd 指向仅支持阻塞读取的字符设备(例如键盘或声卡),则读取操作在数据可用之前不会完成。这可以防止进程退出和流自然关闭。

默认情况下,流将在销毁后发出 'close' 事件。将 emitClose 选项设置为 false 以更改此行为。

通过提供 fs 选项,可以覆盖 openreadclose 的相应 fs 实现。提供fs 选项时,需要覆盖read。如果未提供 fd,则还需要覆盖 open。如果 autoClosetrue ,则还需要覆盖 close

import { createReadStream } from 'node:fs';

// Create a stream from some character device.
const stream = createReadStream('/dev/input/event0');
setTimeout(() => {
  stream.close(); // This may not close the stream.
  // Artificially marking end-of-stream, as if the underlying resource had
  // indicated end-of-file by itself, allows the stream to close.
  // This does not cancel pending read operations, and if there is such an
  // operation, the process may still not be able to exit successfully
  // until it finishes.
  stream.push(null);
  stream.read(0);
}, 100);

如果autoClose 为假,则即使出现错误,文件说明符也不会关闭。关闭它并确保没有文件说明符泄漏是应用程序的责任。如果 autoClose 设置为 true(默认行为),则在 'error''end' 上,文件说明符将自动关闭。

mode 设置文件模式(权限和粘性位),但前提是文件已创建。

读取 100 字节长文件的最后 10 字节的示例:

import { createReadStream } from 'node:fs';

createReadStream('sample.txt', { start: 90, end: 99 });

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

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 fs.createReadStream(path[, options])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。