gpt4 book ai didi

javascript - 关于在 Node 中使用流读取数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:49 25 4
gpt4 key购买 nike

在教程中我发现了这个关于使用流读取数据的示例

var fs = require('fs');
var readableStream = fs.createReadStream('file.txt');
var data = '';

readableStream.on('data', function(chunk) {
data+=chunk;
});

readableStream.on('end', function() {
console.log(data);
});

我有几个问题:

1) 既然 data+= chunk 这意味着 block 是字符串,对吗?否则这个串联将如何工作?

2) 但是如果 1) 为 true 并且 chunk 是字符串,为什么没有设置编码?

3) 您将如何修改此示例以读取二进制文件?肯定是如果数据是二进制的,data+=chunk 在这种情况下串联将不起作用?

有人可以澄清这个困惑吗?

最佳答案

fs.createReadStream() 采用可选的第二个参数,它是一个选项对象,可以在其中配置读取流的编码。如果没有设置编码,则默认为utf8字符串。花了一段时间才找到该信息,因为它不在文档中,但它是 in the code here .

因此,如果您不将编码作为 options 参数的属性传递给 fs.createReadStream(),则默认为 utf8。如果你想处理二进制数据,那么你可以将编码配置为null。流还能够调用 .setEncoding(...) 方法来专门设置其编码,尽管它通常在流的构造函数中设置,因为流在​​创建后通常不会更改其编码。

因此,流的编码决定了是否向您传递 utf8 字符串、缓冲区或其他某种编码类型的数据。而且,如果您没有编码(例如二进制),那么当新数据可用时,您将被传递一个 Buffer 对象而不是字符串。

关于javascript - 关于在 Node 中使用流读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40330819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com