nodejs和streams piping

时间:2017-11-26 22:21:41

标签: node.js pipe

我对nodejs中的管道有疑问。我有一些代码,应该显示当前目录中的文件列表,但它会意外地工作。

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);
    });
});

首先,我知道如何更改正确工作的代码。我只是想了解为什么这段代码可以这样做。

代码很简单,一个可写流,循环中的许多可读流想要通过PassTrough向它写入数据。 如果我将删除管道,所有工作都按预期工作。我看到当前目录中的文件列表。但是对于管道,所有名称都是重复目录+ 1中的文件数量。

为什么文件名与管道重复?

0 个答案:

没有答案