node.js - NodeJS ReadStream 一次不读取 bufferSize 字节

标签 node.js stream buffer

我有一段代码,其中 NodeJS 服务器读取文件并将其流式传输以响应,它看起来像:

var fStream = fs.createReadStream(filePath, {'bufferSize': 128 * 1024});
fStream.pipe(response);

问题是,Node 每次准确读取文件 40960 字节。但是,如果一次读取 131072 (128 * 1024) 字节,我的应用程序会更有效率(由于不适用于此问题的原因)。

有没有办法强制 Node 一次读取 128 * 1024 字节?

最佳答案

接受的答案是错误的。您可以使用 highWaterMark 选项强制 Node 一次读取 (128*1024) 个字节。

var fStream = fs.createReadStream('/foo/bar', { highWaterMark: 128 * 1024 });

Documentation特别指出,可能缓冲的数据量取决于传递给流构造函数的 highWaterMark 选项。对于普通流,highWaterMark 选项指定总字节数。对于以对象模式运行的流,highWaterMark 指定了对象总数。'

另请参阅 this .默认缓冲区大小为 64 KB

关于node.js - NodeJS ReadStream 一次不读取 bufferSize 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11784172/

相关文章:

javascript - Node.js:如何仅在图像发生变化时请求图像

c# - C DLL 处理从 C# 调用的 FILE * - 传入和传出流

c++ - 我应该使用什么来代替 std::ostrstream?

multithreading - Delphi XE线程: how to realize function calling buffer?

go - 在 Go 中使用 bytes.Buffer 实现类斐波那契字符串连接的正确方法是什么?

node.js - 使用 graphql 发出更新请求

node.js - 删除 Node 通知程序中的终端图标

javascript - 引用 Mongoose 模式 objectId 的更好方法是什么

java - 读取 InputStream 字节并写入 ByteArrayOutputStream

java - 从 Java 转到 Scala,我应该使用 List 还是 Buffer 来替代 ArrayList