如何在NodeJS中读取大文件?

我试图读取一个2000万行文件,并更正从Windows到Mac的行结束。 我知道它可以在sed中完成,但sed给了我一个错误,我不知道如何解决(dos2unix:二进制符号0x0008行625060find)。 所以我试图在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()”失败');

你不应该同步。 处理大数据的最佳方式是stream式处理:

 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. }); 

为了读取非常大的文件,最好不要将整个文件读入内存,可以通过行或块来读取文件。 关于如何通过行或者通过nodejs块读取大文件,请参考我在这里的回答 node.js:将文本文件读入数组。 (每行在数组中的一个项目) 。