Node的stream數(shù)據(jù)流你了解嗎
一、Node的數(shù)據(jù)流(stream)
1、處理緩存的方式
(1)一次性全部讀取,然后再進行處理。缺點是大文件處理非常耗時,優(yōu)點是過程直觀
(2)讀取一塊處理一塊.優(yōu)點是提高程序的性能
2、四種類型的流
Readable
- 其是用于讀操作
Writable
- 用在寫操作
Duplex
- 其可以用于讀取和寫入操作
Transform
- 輸出基于輸入的地方進行計算的一種雙相流
每種流都是事件觸發(fā)器,當某個流被調(diào)用時,就會觸發(fā),拋出一個事件:
'data'事件:表示流中有數(shù)據(jù)可以讀取
'end'事件:表示流中沒有數(shù)據(jù)可以讀取
'error'事件:讀寫數(shù)據(jù)錯誤時觸發(fā)
'finish'事件:數(shù)據(jù)刷新到底層系統(tǒng)時觸發(fā)
const fs = require('fs'); let str_data = ''; //創(chuàng)建讀數(shù)據(jù)的流 let readerStream = fs.createReadStream('./test.txt'); //設置流的編碼格式 readerStream.setEncoding('utf8'); //給流綁定事件 readerStream.on('data',function (chunk) { str_data += chunk }) readerStream.on('end',function (){ console.log("讀取的數(shù)據(jù)是:",str_data) }) readerStream.on('error',function (err){ console.log(err.stack) }) console.log('-----End-----') // 讀取的數(shù)據(jù)是: 離離原上草, // 一歲一枯榮; // 野火燒不盡, // 春風吹又生。
const fs = require('fs'); //創(chuàng)建一個讀數(shù)據(jù)的流 let readerStream = fs.createReadStream('./test.txt') //創(chuàng)建一個寫數(shù)據(jù)的流 let writerStream = fs.createWriteStream('./out.txt') //創(chuàng)建管道流 readerStream.pipe(writerStream) console.log('----End----') //可以完成復制,將test文件中的內(nèi)容復制到out文件中
3、zlib模塊:用于文件的壓縮與解壓縮
(1)壓縮方法:zlib.createGzip()
const fs = require('fs'); const zlib = require('zlib'); //創(chuàng)建一個讀數(shù)據(jù)的流 let readerStream = fs.createReadStream('./test.txt') .pipe(zlib.createGzip()) .pipe(fs.createWriteStream('./text.zip')) readerStream.on('error',function (err) { console.log(err.stack) }) console.log('----End----') //創(chuàng)建一個名為text.zip的壓縮包
(2)解壓縮方法:zlib.createGunzip()
const fs = require('fs'); const zlib = require('zlib'); fs.createReadStream('./test.zip') .pipe(zlib.createGunzip()) .pipe(fs.createWriteStream('./db.txt')) //解壓名為test.zip的壓縮包,并將其中的內(nèi)容復制到db.txt當中
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
Linux下為Node.js程序配置MySQL或Oracle數(shù)據(jù)庫的方法
這篇文章主要介紹了Linux下為Node.js程序配置MySQL或Oracle數(shù)據(jù)庫的方法,這里默認已經(jīng)裝配好了Node環(huán)境然后我們利用npm包管理工具來進行配置,需要的朋友可以參考下2016-03-03PostgreSQL Node.js實現(xiàn)函數(shù)計算方法示例
這篇文章主要給大家介紹了關于PostgreSQL Node.js實現(xiàn)函數(shù)計算的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-02-02使用Jasmine和Karma對AngularJS頁面程序進行測試
這篇文章主要介紹了使用Jasmine和Karma對AngularJS頁面程序進行測試的方法,以Node.js為環(huán)境,非常適合JavaScript的全棧開發(fā)時使用,需要的朋友可以參考下2016-03-03