在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ Node.js流
Node.js快速入門
Node.js事件發(fā)射器
Node.js包(JXcore)
Node.js事件循環(huán)
Node.js文件系統(tǒng)
Node.js npm
Node.js安裝和入門
Node.js工具模塊
Node.js回調(diào)概念
Node.js流
Node.js入門實(shí)例程序
Node.js教程
Node.js規(guī)范化應(yīng)用
Node.js REPL終端
Node.js緩沖器
Node.js RESTful API
Node.js全局對象
Linux安裝Node.js(源碼編譯安裝)
Node.js Web模塊
Node.js Express框架

Node.js流

什么是流?

流是可以從一個(gè)源讀取或?qū)懭霐?shù)據(jù)到連續(xù)的目標(biāo)對象。在Node.js,有四種類型的數(shù)據(jù)流。

  • Readable - 其是用于讀操作。

  • Writable - 用在寫操作。

  • Duplex - 其可以用于讀取和寫入操作。

  • Transform - 輸出基于輸入的地方進(jìn)行計(jì)算的一種雙相流。

每種類型的流是一個(gè)EventEmitter實(shí)例,并拋出的時(shí)代不同的實(shí)例幾個(gè)事件。例如,一些常用的事件是:

  • data - 當(dāng)有數(shù)據(jù)可讀取此事件。

  • end - 當(dāng)沒有更多的數(shù)據(jù)讀取此事件被觸發(fā)。

  • error - 當(dāng)有任何錯(cuò)誤或接收數(shù)據(jù)寫入此事件。

  • finish - 當(dāng)所有數(shù)據(jù)已刷新到底層系統(tǒng)觸發(fā)此事件

本教程將讓您了解關(guān)于數(shù)據(jù)流的常用操作。

從流中讀取

創(chuàng)建一個(gè)名為input.txt的文本文件有以下內(nèi)容

Yiibai Point is giving self learning content
to teach the world in simple and easy way!!!!!

創(chuàng)建一個(gè)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)在運(yùn)行main.js看到的結(jié)果:

$ node main.js

驗(yàn)證輸出

Program Ended
Yiibai Point is giving self learning content
to teach the world in simple and easy way!!!!!

寫入流

創(chuàng)建一個(gè)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)在運(yùn)行main.js看到的結(jié)果:

$ node main.js

驗(yàn)證輸出

Program Ended
Write completed.

現(xiàn)在打開在當(dāng)前目錄中創(chuàng)建output.txt文件,驗(yàn)證output.txt文件中有以下內(nèi)容。

Simply Easy Learning

管道流

管道是我們提供一個(gè)流的輸出作為輸入到另一個(gè)流的機(jī)制。它通常被用于從一個(gè)流中獲取數(shù)據(jù),并通過該流輸出到另一個(gè)流。沒有對管道的操作沒有限制?,F(xiàn)在,我們將展示一個(gè)管道從一個(gè)文件中讀取和寫入到另一個(gè)文件的例子。

創(chuàng)建一個(gè)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)在運(yùn)行main.js看到的結(jié)果:

$ node main.js

驗(yàn)證輸出

Program Ended

在當(dāng)前目錄打開所創(chuàng)建的output.txt文件,并驗(yàn)證output.txt文件中有以下內(nèi)容。

Yiibai Point is giving self learning content
to teach the world in simple and easy way!!!!!

鏈?zhǔn)搅?/h2>

鏈?zhǔn)绞且粋€(gè)機(jī)制,一個(gè)流的輸出連接到另一個(gè)流,并創(chuàng)建一個(gè)鏈多流操作。它通常用于管道的操作。現(xiàn)在,我們將使用管道和鏈接先壓縮文件,然后解壓縮。

創(chuàng)建一個(gè)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)用