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



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

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

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

我想我将不得不流式传输它,所以...

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

我该怎么办?

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

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 节点准备好写入时,它都会将数据发送到下游。没有比这更好的了。

希望这有帮助

相关内容

  • 没有找到相关文章

最新更新