【问题标题】:NodeJS lineReader appendFile -- lines get lost somewhereNodeJS lineReader appendFile——行在某处丢失
【发布时间】:2016-06-17 20:11:38
【问题描述】:

我有一个使用 10 行测试文件在本地计算机上运行良好的脚本。但是,当我将 AWS 中的脚本与 2000 万行 的真实文件一起使用时,我似乎丢失了 1/5 的行。我在这个脚本中做错了什么?我没有收到任何错误消息。

var sha1 = require('sha1');

var fs = require('fs');

var lineReader = require('readline').createInterface({
    terminal: false,
  input: require('fs').createReadStream('./readme.txt')
});

    lineReader.on('line', function (line) {

        var hashed = sha1(line);

        fs.appendFile('./writeme.txt', line + "," + hashed + "\n", function(err){

    })

});

【问题讨论】:

  • 如果您对异步术语不满意,请尝试使用 appendFileSync

标签: node.js sha1


【解决方案1】:

这终于奏效了。感谢事件流和转换选项!

var fs = require('fs');
var stream = require('stream');
var es = require('event-stream');
var sha1 = require('sha1');

var input = fs.createReadStream("readme.txt");
var output = fs.createWriteStream("writeme.txt");

var parse = new stream.Transform;

parse._transform = function(chunk, encoding, done) {

var hashed = sha1(chunk);
var line = chunk + ' | ' + hashed + '\n';

    done(null, line);
}

input.pipe(es.split('\n')).pipe(parse).pipe(output);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2018-06-23
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多