流是可以從一個源讀取或?qū)懭霐?shù)據(jù)到連續(xù)的目標(biāo)對象。在Node.js,有四種類型的數(shù)據(jù)流。
Readable - 其是用于讀操作。
Writable - 用在寫操作。
Duplex - 其可以用于讀取和寫入操作。
Transform - 輸出基于輸入的地方進行計算的一種雙相流。
每種類型的流是一個EventEmitter實例,并拋出的時代不同的實例幾個事件。例如,一些常用的事件是:
data - 當(dāng)有數(shù)據(jù)可讀取此事件。
end - 當(dāng)沒有更多的數(shù)據(jù)讀取此事件被觸發(fā)。
error - 當(dāng)有任何錯誤或接收數(shù)據(jù)寫入此事件。
finish - 當(dāng)所有數(shù)據(jù)已刷新到底層系統(tǒng)觸發(fā)此事件
本教程將讓您了解關(guān)于數(shù)據(jù)流的常用操作。
創(chuàng)建一個名為input.txt的文本文件有以下內(nèi)容
Yiibai Point is giving self learning content to teach the world in simple and easy way!!!!!
創(chuàng)建一個js文件名為main.js里面有如下代碼:
var fs = require("fs"); var data = ''; // Create a readable stream var readerStream = fs.createReadStream('input.txt'); // Set the encoding to be utf8. readerStream.setEncoding('UTF8'); // Handle stream events --> data, end, and error readerStream.on('data', function(chunk) { data += chunk; }); readerStream.on('end',function(){ console.log(data); }); readerStream.on('error', function(err){ console.log(err.stack); }); console.log("Program Ended");
現(xiàn)在運行main.js看到的結(jié)果:
$ node main.js
驗證輸出
Program Ended Yiibai Point is giving self learning content to teach the world in simple and easy way!!!!!
創(chuàng)建一個js文件名為main.js的文件,里面有如下代碼:
var fs = require("fs"); var data = 'Simply Easy Learning'; // Create a writable stream var writerStream = fs.createWriteStream('output.txt'); // Write the data to stream with encoding to be utf8 writerStream.write(data,'UTF8'); // Mark the end of file writerStream.end(); // Handle stream events --> finish, and error writerStream.on('finish', function() { console.log("Write completed."); }); writerStream.on('error', function(err){ console.log(err.stack); }); console.log("Program Ended");
現(xiàn)在運行main.js看到的結(jié)果:
$ node main.js
驗證輸出
Program Ended Write completed.
現(xiàn)在打開在當(dāng)前目錄中創(chuàng)建output.txt文件,驗證output.txt文件中有以下內(nèi)容。
Simply Easy Learning
管道是我們提供一個流的輸出作為輸入到另一個流的機制。它通常被用于從一個流中獲取數(shù)據(jù),并通過該流輸出到另一個流。沒有對管道的操作沒有限制?,F(xiàn)在,我們將展示一個管道從一個文件中讀取和寫入到另一個文件的例子。
創(chuàng)建一個js文件名為main.js里面有如下代碼:
var fs = require("fs"); // Create a readable stream var readerStream = fs.createReadStream('input.txt'); // Create a writable stream var writerStream = fs.createWriteStream('output.txt'); // Pipe the read and write operations // read input.txt and write data to output.txt readerStream.pipe(writerStream); console.log("Program Ended");
現(xiàn)在運行main.js看到的結(jié)果:
$ node main.js
驗證輸出
Program Ended
在當(dāng)前目錄打開所創(chuàng)建的output.txt文件,并驗證output.txt文件中有以下內(nèi)容。
Yiibai Point is giving self learning content to teach the world in simple and easy way!!!!!
鏈?zhǔn)绞且粋€機制,一個流的輸出連接到另一個流,并創(chuàng)建一個鏈多流操作。它通常用于管道的操作。現(xiàn)在,我們將使用管道和鏈接先壓縮文件,然后解壓縮。
創(chuàng)建一個js文件名為main.js里面有如下代碼:
var fs = require("fs"); var zlib = require('zlib'); // Compress the file input.txt to input.txt.gz fs.createReadStream('input.txt') .pipe(zlib.createGzip()) .pipe上一篇:Node.js包(JXcore)下一篇:Node.js規(guī)范化應(yīng)用