已解决:在Node中使用“ fs”,我将如何流式传输CSV文件?

时间:2019-12-30 09:54:00

标签: node.js csv fs

我正在使用createReadStream()尝试流式存储在程序目录中的CSV文件,但是,它似乎正在返回一个缓冲区,该缓冲区带有文件字节的字符串,而不是实际的文本内容。我的印象是readFile()用于缓冲文件,而createReadStream()则用于流式传输文件。也许我只是不知道流真正起作用的方式。

在这一点上,我只是输出数据以查看程序正在流式传输的内容。代码如下:

const fs = require("fs");
const path = require("path");

// These variables set the filepath of the CSV file
const basePath = "./"
const fileName = "dummy.csv"

// Create the path string
const fileLoc = path.join(basePath, fileName);
console.log(fileLoc);

fs.createReadStream(fileLoc).on("data", (data) => { console.log(data); })

输出:

<Buffer 54 49 54 4c 45 2c 20 41 52 54 49 53 54 2c 20 59 45 41 52 0d 0a 43 61 6e 20 59 6f 75 20 46 65 65 6c 20 4d 79 20 48 65 61 72 74 2c 20 42 72 69 6e 67 20 ... 122 more bytes>

请注意,我还没有管道传输数据-这是因为我无法想到将数据管道传输到哪个可写流,或者我将需要做什么来创建数据。我的问题很可能就在这里。

预先感谢

编辑:解决方案是简单地使用.toString()

将缓冲区转换为字符串

1 个答案:

答案 0 :(得分:1)

您可以使用buf.toString(...)将缓冲区转换为UTF-8字符串。

您也可以只使用预构建的模块来流式传输CSV文件。其中有很多here on NPM。而且,如果您想了解它们的工作原理,可以查看其中任何一个模块的源代码。