node.js 利用流實現(xiàn)讀寫同步,邊讀邊寫的方法
更新時間:2017年09月11日 08:56:15 作者:八bug哥哥
下面小編就為大家?guī)硪黄猲ode.js 利用流實現(xiàn)讀寫同步,邊讀邊寫的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
如下所示:
//10個數(shù) 10個字節(jié),每次讀4b,寫1b
let fs=require("fs");
function pipe(source,target) {
//先創(chuàng)建可讀流,再創(chuàng)建可寫流
//先讀一次,rs.on(data)
//將讀到的類容寫入目標中 ,返回布爾值,如果是ture,繼續(xù)寫,默認情況應該是false,暫停讀取
//ws.on('drain'),抽干后,回復讀取
//監(jiān)聽讀取文件完畢后,關閉讀取rs.on('end')
let rs=fs.createReadStream(source,{highWaterMark:4});
let ws=fs.createWriteStream(target,{highWaterMark:1});
rs.on('data',function (chunk) { //chunk是buffer類型
if(ws.write(chunk)===false){
//寫不下,停止讀取
rs.pause()
}
});
ws.on('drain',function () {
//每次寫的內(nèi)存干了就恢復讀取
console.log("111");
rs.resume() //恢復讀取
});
rs.on('end',function (chunk) {
ws.end();
})
}
pipe('./1.txt','./3.txt')
上面這種寫法比較繁瑣,大家看完后,忘記就行
node.js提供給我們內(nèi)置方法pipe
//10個數(shù) 10個字節(jié),每次讀4b,寫1b
let fs=require("fs");
function pipe(source,target) {
let rs=fs.createReadStream(source,{highWaterMark:4});
let ws=fs.createWriteStream(target,{highWaterMark:1});
//可讀流到可寫流,異步操作,可以保證內(nèi)存不會被淹沒,讀一點,寫一點
// 如果想看文件類容,使用readFile
rs.pipe(ws);
}
pipe('./1.txt','./4.txt')
直接將讀取的流操作到寫入流中,還是異步操作
以上這篇node.js 利用流實現(xiàn)讀寫同步,邊讀邊寫的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Express 框架中使用 EJS 模板引擎并結合 silly-datetime
這篇文章主要介紹了Express 框架中使用 EJS 模板引擎并結合 silly-datetime 庫進行日期格式化的實現(xiàn)方法,結合具體實例形式分析了express框架引入EJS模版以及導入 silly-datetime 庫的格式化方法傳遞給EJS模版使用的相關操作技巧,需要的朋友可以參考下2023-05-05

