在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( /* ??? */ )
我该怎么做?
你应该看看clarinet
parsingJSON
的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节点准备好写入,它就会向下传送数据。 这不可能变得更好。
希望这可以帮助