Node.js 在节点JS中管道缓冲区的正确方法

Node.js 在节点JS中管道缓冲区的正确方法,node.js,stream,filesystems,pipe,fs,Node.js,Stream,Filesystems,Pipe,Fs,看一看: var Client = require('ftp'); var fs = require('fs'); var c = new Client(); c.on('ready', function() { c.get('foo.txt', function(err, stream) { if (err) throw err; stream.once('close', function() { c.end(); }); stream.pipe(fs.creat

看一看:

var Client = require('ftp');
var fs = require('fs');

var c = new Client();
c.on('ready', function() {
  c.get('foo.txt', function(err, stream) {
    if (err) throw err;
    stream.once('close', function() { c.end(); });
    stream.pipe(fs.createWriteStream('foo.local-copy.txt'));
  });
});
// connect to localhost:21 as anonymous
c.connect();
这段代码来自。基本上,它打开一个读流,并将其导入一个写流。最后,它关闭与源的连接

管道方法是否在管道流(源)关闭后关闭目标流?我在API文档中找不到它


我做了一些测试,从witch我可以得出结论,它可以做到,但我不确定。

当源发出
结束
事件时,目标流关闭。这记录在:

默认情况下,当源流 发出结束,因此目标不再可写

这允许以下形式的调用:

var http = require('http'),
  fs = require('fs');

http.createServer(function (req, res) {
  fs.createReadStream('path/to/file').pipe(res);
}).listen(3000);
如果
response
对象上未调用
end
,则请求将超时

这将使请求超时:

  fs.createReadStream('path/to/file').pipe(res, {end: false});

当源发出
end
事件时,目标流关闭。这记录在:

默认情况下,当源流 发出结束,因此目标不再可写

这允许以下形式的调用:

var http = require('http'),
  fs = require('fs');

http.createServer(function (req, res) {
  fs.createReadStream('path/to/file').pipe(res);
}).listen(3000);
如果
response
对象上未调用
end
,则请求将超时

这将使请求超时:

  fs.createReadStream('path/to/file').pipe(res, {end: false});

当源发出
end
事件时,目标流关闭。这记录在:

默认情况下,当源流 发出结束,因此目标不再可写

这允许以下形式的调用:

var http = require('http'),
  fs = require('fs');

http.createServer(function (req, res) {
  fs.createReadStream('path/to/file').pipe(res);
}).listen(3000);
如果
response
对象上未调用
end
,则请求将超时

这将使请求超时:

  fs.createReadStream('path/to/file').pipe(res, {end: false});

当源发出
end
事件时,目标流关闭。这记录在:

默认情况下,当源流 发出结束,因此目标不再可写

这允许以下形式的调用:

var http = require('http'),
  fs = require('fs');

http.createServer(function (req, res) {
  fs.createReadStream('path/to/file').pipe(res);
}).listen(3000);
如果
response
对象上未调用
end
,则请求将超时

这将使请求超时:

  fs.createReadStream('path/to/file').pipe(res, {end: false});