NodeJS使用管道写出大文件

时间:2015-01-01 02:31:21

标签: javascript node.js performance

我是nodejs的新手......正在做一些服务器端文件转换。

我正在使用管道从流中读取数据,转换,然后将转换后的数据写入文件。适用于小文件。但对于大型文件,它有两个问题:

  1. 数据不会逐渐写入文件。
  2. 它使用了大量内存,因此每连续10万行 需要更长的时间来处理。
  3. 我认为它与调用process.nextTick有关。我无法弄清楚如何把整个事情放在一起。

    我有类似的东西:

    readableFileStream.pipe(through(convert)).pipe(fileWritableStream);
    
    function convert(buf) {
       //do something to buf
       this.queue(convertedBuf);
    }
    

    我想要像:

    var threashold = 100000;
    var cnt = 0;
    function convert(buf) {
       cnt++;
       if (cnt > threashold && cnt % threashold == 0) {
            process.nextTick(doSomething);
       }
       //do something to buf
       this.queue(convertedBuf);
    }
    

    显然,这不起作用,nextTick不带参数。如何处理这样的情况?

0 个答案:

没有答案