【问题标题】:Change the destination file in a file writer stream更改文件写入器流中的目标文件
【发布时间】:2015-09-01 11:41:16
【问题描述】:

我不想连续登录一个文件,但是每 1000 行之后我想更改一个新文件。现在我的方法是这样的:

var fs = require('fs');
...
var outputStream = fs.createWriteStream(fileName + '.csv');
outputStream.write(content, 'utf8', callback);
...
if (lineCounter === 1000) {
  outputStream.end(function(err) {
    outputStream = fs.createWriteStream(fileName2 + '.csv');
    outputStream.write(content, 'utf8', callback);
  });
}

最后文件不包含最后几行。我愿意接受任何解决方案,我只需要将流写入多个文件。

提前致谢!

【问题讨论】:

    标签: javascript node.js file stream fs


    【解决方案1】:

    起初我尝试使用 Highland.js 的流,但由于某种原因我无法暂停它们。我发布的脚本已经过测试并且可以正常工作。我在最后分享了原始来源。所以,我实际上还没有开始阅读第二个文件,但我相信现在很容易,因为在脚本达到定义的行数限制后,您有必要继续进行。

    var stream = require('stream'),
            fs = require('fs'),
            readStream = fs.createReadStream('./stream.txt', {highWaterMark: 15}),
            limitStream = new stream.Transform(),
            limit = 0
        limitStream._transform = function(chunk, encoding, cb) {
            if (++limit <= 5) {
                console.log('before', limit)
                return cb(null, chunk + '\n')
            }
            console.log('after',limit)
            this.end()
            cb()
        }
        limitStream.on('unpipe', function() { console.log('unpipe emitted from limitStream') })
        limitStream.on('end', function() { console.log('end emitted from limitStream') })
        readStream.pipe(limitStream).pipe(process.stdout)
    

    来源:https://groups.google.com/forum/#!topic/nodejs/eGukJUQrOBY

    发布答案后,我发现库也可以工作,但我承认我没有测试过。我只是分享它作为参考点:https://github.com/isaacs/truncating-stream

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多