在Node.js中处理一个100MB的文件

基本上我有一个文件,比如说100mb.qs ,我需要通过下面的函数传递它的全部内容:

 function process(in){ var out = JSON.stringify(require('querystring').parse(in)); return out; } 

然后用结果replace文件的内容。

我想我得把它stream出来,所以…

 require('fs').createReadStream('1mb.qs').pipe( /* ??? */ ) 

我该怎么做?

你应该看看clarinetparsingJSON的stream。

 var createReadStream = require('fs').createReadStream , createWriteStream = require('fs').createReadStream , parseJson = require('clarinet').createStream() ; parseJson.on('error', function(err){ if (err) throw err }) parseJson.on('onvalue', function(v){ // do stuff with value }) parseJson.on('onopenobject', function (key) { // I bet you got the idea how this works :) }) createReadStream('100mb.qs') .pipe(parseJson) .pipe(createWriteStream('newerFile.qs')) 

还有更多的事件要听,所以你一定要看看。
而且,只要JSON节点准备好写入,它就会向下传送数据。 这不可能变得更好。

希望这可以帮助