块(缓冲区)在 ReadStreaming 中从节点 js 中的文件(文本文件)携带的数据量?

Amount of data a chunk (buffer) carries in ReadStreaming from a file (a text file) in node js?

是否可以从节点js中的文件(文本文件)中知道块(缓冲区)在ReadStreaming中携带的数据量???

我创建了一个 ReadStream 并以块的形式显示了一个文本文件的数据,但是是否可以找到一个缓冲区可能拥有的数据量?

var myReadStream = fs.createReadStream( __dirname + '/readme.txt', 'utf8');

myReadStream.on('data', function(chunk){

    console.log('new chunk received');
    console.log(chunk);

Is it possible to know the amount of data a chunk (buffer) carries in ReadStreaming from a file (a text file) in node js ???

是的,在您的示例中,chunk.length 将是块中的数据量。

您无法控制块的长度。当 data 事件发生时,您必须对最终结果进行编码。这就是流的工作方式。给定块的大小取决于发送的数据量,取决于传输(慢速传输更有可能为您提供更小的块)和流中的最大缓冲区大小。

您可以在使用 highWaterMark 选项创建流时控制流中的最大缓冲区大小,如图 in the doc

var myReadStream = fs.createReadStream( __dirname + '/readme.txt', 'utf8', { highWaterMark: 60000 });

但是将其设置为更大的值只会使获得更大的块成为可能。它不保证它。

I created a ReadStream and displayed the data of a text file in chunks, but is it possible to find the amount of data a buffer could have ?

如果您在创建流时设置 highWaterMark,那么这将是您可以获得的最大块大小。如果您想查看当前 highWaterMark 设置的内容,您可以在以下位置查看流实例数据:

myReadStream._readableState.highWaterMark

这没有记录在案 API,因此可能会发生变化。如果您需要知道,您应该在创建流时将其设置为所需的值。