gpt4 book ai didi

node.js - Nodejs 和流管道

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:24 24 4
gpt4 key购买 nike

我有一个关于 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。

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

最佳答案

经过一番研究,我有了答案。这是因为在这两种情况下“传递”的是同一个对象,并且它有 2 个(或更多,取决于文件数量)通过管道进行写入的流(在本例中为 2 个或更多相同的流)。

关于node.js - Nodejs 和流管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47501622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com