简体   繁体   English

从流Nodejs删除或更改原始数据

[英]Remove or change original data from stream Nodejs

I have a code to write a hash to the file from text of another file, but the problem is that in resulting file is written not only hash, but also the original text. 我有一个代码,可以将另一个文件的文本中的哈希值写入文件,但是问题是在生成的文件中不仅写入了哈希值,还写入了原始文本。

For example: if content of source file qwerty a got in result file qwertyd8578edf8458ce06fbc5bb76a58c5ca4 , but i need just d8578edf8458ce06fbc5bb76a58c5ca4 . 例如:如果源文件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);

How i can fix this? 我该如何解决? Thanks. 谢谢。

If you want to hash a stream, thats super easy as hash is itself a stream ( a Transform stream). 如果您想对流进行哈希处理,那么超级简单,因为hash本身就是一个流(转换流)。 Just pipe your input into it, and pipe the resulting hash into your output: 只需将输入输入,然后将生成的哈希输入输出:

 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 参考

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM