在 Node.js 中,Stream 是一种处理流式数据的抽象接口。Stream 可以是可读的、可写的,或者同时可读可写的。
可读流(Readable Stream)
可读流用于从数据源读取数据。例如,读取文件、网络请求等。
创建可读流
-- -------------------- ---- ------- ----- -- - -------------- ----- -------------- - -------------------------------- ------------------------- ------- -- - ------------------------------ --- ------------------------ -- -- - ---------------- -- ------- ---
可读流事件
data
:当有数据可读时触发。end
:当没有更多的数据可读时触发。error
:当发生错误时触发。
可写流(Writable Stream)
可写流用于向目标写入数据。例如,写入文件、网络响应等。
创建可写流
const fs = require('fs'); const writableStream = fs.createWriteStream('output.txt'); writableStream.write('Hello, World!\n'); writableStream.end();
可写流事件
drain
:当流中所有数据都已经被传递给底层系统时触发。finish
:当所有数据已经被写入底层系统时触发。error
:当发生错误时触发。
双工流(Duplex Stream)
双工流既可以读取数据,也可以写入数据。
创建双工流
-- -------------------- ---- ------- ----- - ------ - - ------------------ ----- ------------ - --- -------- ------------ --------- --------- - ------------------------------ ----------- -- ---------- - ----------------- ----------- ---------------- - --- ----------------------------------
双工流事件
双工流同时继承了可读流和可写流的事件。
转换流(Transform Stream)
转换流是一种特殊的双工流,用于对数据进行转换。
创建转换流
-- -------------------- ---- ------- ----- - --------- - - ------------------ ----- --------------- - --- ----------- ---------------- --------- --------- - ------------------------------------------ ----------- - --- ---------------------------------------------------------
转换流事件
转换流同时继承了可读流和可写流的事件。
以上是关于 Node.js Stream 的简要介绍,希望能帮助你更好地理解和应用 Stream。