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-03
PostgreSQL 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

