在 Node 中使用 'fs',我将如何流式传输 CSV 文件?
Using 'fs' in Node, how would I stream a CSV file?
使用 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>
请注意,我没有通过管道传输数据 - 这是因为我想不出将数据传输到哪个可写流,或者我需要做什么来创建一个。我的问题很可能出在这里。
提前致谢
您可以使用 buf.toString(...) 将缓冲区转换为 UTF-8 字符串。
您也可以只使用预构建的模块来流式传输 CSV 文件。有很多 here on NPM。而且,如果您想了解这些模块的工作原理,您可以查看其中任何模块的源代码。
使用 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>
请注意,我没有通过管道传输数据 - 这是因为我想不出将数据传输到哪个可写流,或者我需要做什么来创建一个。我的问题很可能出在这里。
提前致谢
您可以使用 buf.toString(...) 将缓冲区转换为 UTF-8 字符串。
您也可以只使用预构建的模块来流式传输 CSV 文件。有很多 here on NPM。而且,如果您想了解这些模块的工作原理,您可以查看其中任何模块的源代码。