當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js stream.Readable.pipe(destination[, options])用法及代碼示例


readable.pipe(destination[, options])

添加於:v0.9.4

參數

readable.pipe() 方法將 Writable 流附加到 readable ,使其自動切換到流動模式並將其所有數據推送到附加的 Writable 。數據流將被自動管理,以便目標Writable 流不會被更快的Readable 流淹沒。

以下示例將 readable 中的所有數據通過管道傳輸到名為 file.txt 的文件中:

const fs = require('node:fs');
const readable = getReadableStreamSomehow();
const writable = fs.createWriteStream('file.txt');
// All the data from readable goes into 'file.txt'.
readable.pipe(writable);

可以將多個Writable 流附加到單個Readable 流。

readable.pipe() 方法返回對目標流的引用,從而可以設置管道流鏈:

const fs = require('node:fs');
const r = fs.createReadStream('file.txt');
const z = zlib.createGzip();
const w = fs.createWriteStream('file.txt.gz');
r.pipe(z).pipe(w);

默認情況下,當源 Readable 流發出 'end' 時,在目標 Writable 流上調用 stream.end() ,因此目標不再可寫。要禁用此默認行為,可以將 end 選項作為 false 傳遞,從而使目標流保持打開狀態:

reader.pipe(writer, { end: false });
reader.on('end', () => {
  writer.end('Goodbye\n');
});

一個重要的警告是,如果 Readable 流在處理期間發出錯誤,則 Writable 目標不會自動關閉。如果發生錯誤,則需要手動關閉每個流以防止內存泄漏。

process.stderr process.stdout Writable 流在 Node.js 進程退出之前永遠不會關閉,無論指定的選項如何。

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 stream.Readable.pipe(destination[, options])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。