pipe
2020 M12 31
通过管道可控制流速,当没有写入空间时暂停读取,在有空间时继续读取并完成写入,读取完毕后关闭可写流。
const fs = require('fs')
function pipe(readFile,writeFileu){
let rs = fs.createReadStream(readFile,{
highWaterMark:5
})
let ws = fs.createWriteStream(writeFileu,{
highWaterMark:1
})
rs.on('data',function(chunk){
// 当ws.write() 返回false时
//表示没有空间继续写入了,暂停读取
if(ws.write(chunk) == false){
rs.pause() // 暂停rs的data事件
}
})
// 当触发可写流的drain,表示有空间继续写入了,
//继续读取文件
ws.on('drain',function(){
rs.resume()
// 恢复rs的data事件
// 把当前读入的内容都写到文件中了,继续调用读写
})
// 当读取流触发end方法,表示读取完毕
//这时关闭可写流的写入
rs.on('end',function(){
ws.end()
})
}
pipe('1.txt','./2.txt')