gpt4 book ai didi

node.js - 如何在NodeJS中读取大文件?

转载 作者:太空宇宙 更新时间:2023-11-03 22:10:16 26 4
gpt4 key购买 nike

我正在尝试读取一个 2000 万行的文件并更正从 Windows 到 Mac 的行结尾。我知道它可以在 sed 中完成,但 sed 给了我一个我不知道如何修复的错误(dos2unix:在第 625060 行找到二进制符号 0x0008)。所以我正在尝试在 NodeJS 中解决这个问题。这是我的代码:

var fs = require('fs');
var eol = require('eol');

//read file
var input = fs.readFileSync(process.argv[2], 'utf8');

//fix lines
output = eol.auto(input);
console.log("Lines Fixed! Now Writing....")

//write file
fs.writeFile(process.argv[2] + '_fixed.txt', output, function (err) {
if (err) return console.log(err);
});
console.log("Done!")

问题是文件太大,我收到此错误 buffer.js:513 抛出新错误('“toString()”失败');

最佳答案

您不应该同步执行此操作。处理大数据的最佳方式是流:

let output = '';

const readStream = fs.createReadStream(filename);

readStream.on('data', function(chunk) {
output += eol.auto(chunk.toString('utf8'));
});

readStream.on('end', function() {
console.log('finished reading');
// write to file here.
});

关于node.js - 如何在NodeJS中读取大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44279211/

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