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

问题描述 投票:0回答:1

使用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>

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

提前感谢

EDIT:解决方案是简单地使用.toString()]将缓冲区转换为字符串

[使用createReadStream(),我正在尝试流式传输存储在程序目录中的CSV文件,但是,它似乎正在返回带有文件字节串的缓冲区,而不是实际的...

node.js csv fs
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.