从流Nodej中删除或更改原始数据

时间:2018-01-12 12:35:30

标签: javascript node.js fs

我有一个代码从另一个文件的文本写入文件的哈希值,但问题是在结果文件中不仅写入了哈希,还写入了原始文本。

例如:如果源文件qwerty的内容有结果文件qwertyd8578edf8458ce06fbc5bb76a58c5ca4,但我只需要d8578edf8458ce06fbc5bb76a58c5ca4

const fs = require('fs');
const crypto = require('crypto');
const hash = crypto.createHash('MD5');

const readData = fs.createReadStream('./task1/input.txt');
const writeData = fs.createWriteStream('./task1/output.txt');

readData.on('data', (chunk) => {
    hash.update(chunk);
});

readData.on('end', () => {
    const resultHash = hash.digest('hex');
    writeData.end(resultHash);
    console.log(resultHash);
});

readData.pipe(writeData);

我如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:1)

如果你想哈希一个流,那就非常容易,因为hash本身就是一个流(一个转换流)。只需将输入传入其中,然后将生成的哈希管道输出到输出中:

 const fs = require('fs');
 const crypto = require('crypto');
 const hash = crypto.createHash('MD5');

  const readData = fs.createReadStream('./task1/input.txt');
 const writeData = fs.createWriteStream('./task1/output.txt');

 readData.pipe(hash).pipe(writeData);

Reference