如何在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:将文本文件读入数组。 (每行在数组中的一个项目) 。
- 我可以将控制转移到Hapi.js中的另一个处理程序吗?
- NPM错误在Sails js上创build新的应用程序
- AWS API网关 – Elastic Beanstalk – 受限访问
- ES 2015 VS 2015 for node.js运行任务运行器资源pipe理器
- angular js ng-view返回blanc partials – Express / Jade
- 如何在node.js超时后closures套接字?
- 如何组织我的规格文件?
- npm安装可执行文件在usr / local / share / npm / bin而不是usr / local / bin
- Mongoose,在mongoose.model('core_user')。schema。new mongoose.schema(…)后强制更改模式。