createReadStream 是fs模塊里面讀流的一個方法
這個方法基於fs模塊的,所以我們先要引進fs模塊
let fs=require("fs");
createReadStream 讀取文件,有兩個參數
第一個參數,讀取文件的路徑
第二個參數 highWaterMark 最高水位線,默認最多讀取64K
讀取的類容都是buffer類型
返回的結果是一個可讀流的實例,是非流動模式---我們最后要轉為流動模式
先要定義一下我們讀流的變量,假設我們有一個1.txt文件,我們要讀取1.txt里面的類容
我們先設置最高水位線每次讀取1k
let rs=fs.createReadStream('./1.txt',{highWaterMark:1})
我們的rs里面有綁定了兩個事件方法data和end
實例
let fs=require("fs");
// 第一個參數,讀取文件的路徑
//第二個參數 highWaterMark 最高水位線,默認最多讀取64K
//讀取的類容都是buffer類型
//返回的結果是一個可讀流的實例,是非流動模式---我們最后要轉為流動模式
// 轉流動模式需要on事件監測
let rs=fs.createReadStream('./1.txt',{highWaterMark:1})
//在內部不斷觸發rs.emit('data',數據);data不能更改,留動模式開啟后,數據會瘋狂觸發data事件
let arr=[];
rs.on('data',function (chunk) { //chunk是buffer類型
arr.push(chunk);
})
//監聽文件讀取完畢,會自動觸發一次end事件,沒有讀取完是不會觸發的
//Buffer.concat合並小buffer
rs.on('end',function (chunk) {
console.log( Buffer.concat(arr).toString());
})
// 監聽錯誤
rs.on('error',function (err) {
console.log(err);
})
// rs.resume() 恢復讀取
// rs.pause() 暫停讀取
//這兩個都控制是否繼續觸發data事件
