2
nodejsのパイプに関する質問があります。私は現在のディレクトリにファイルのリストを表示する必要がありますが、予期せず動作するいくつかのコードがあります。nodejsとストリームpiping
const { Transform, PassThrough, Readable } = require("stream");
const fs = require("fs");
const config = {distPath: '.',scanPath: '.'};
let writeStream = process.stdout;
let pass = new PassThrough();
fs.readdir(config.scanPath, (err, files) => {
files.forEach(file => {
let filename = new Readable();
filename.push(file + "\n");
filename.push(null);
filename.pipe(pass).pipe(writeStream);
});
});
まず、正しい作業のためにコードを変更する方法を知っています。このコードがなぜこのように機能するのかを理解したいだけです。
コードはシンプルで書き込み可能なストリームの1つで、ループ内の多くの読み取り可能なストリームは、PassTroughを通じてデータを書き込む必要があります。 パイプを外すと、すべて正常に動作します。私は現在のディレクトリにあるファイルのリストを参照してください。しかし、パイプでは、ディレクトリ+ 1にあるファイルの数だけ、すべての名前が複製されます。
なぜファイル名がパイプで複製されるのですか?