在Node.js中处理100MB文件

时间:2013-11-07 00:53:55

标签: node.js stream query-string filestream

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

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

然后用结果替换文件的内容。

我想我必须要传播它,所以......

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

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您应该查看clarinet以将JSON解析为流。

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节点准备好写入,它就会向下发送数据。它不会比这更好。

希望这有帮助