Stream.Writable可写流类
2021-02-26 本文已影响0人
静昕妈妈芦培培
例:
const fs = require('fs')
//创建可读流
const reader = fs.createReadStream('a.txt')
//创建可写流,设置开始写入的字节和写入的方式
// 若要把数据追加到原数据的末尾,设置flags为a,此时设置start无效
const writer = fs.createWriteStream('foo.txt', {
flags: 'a',
})
//如果调用 stream.write(chunk) 返回 false,则当可以继续写入数据到流时会触发 'drain' 事件。
writer.once('drain', () => {
console.log('触发了drain事件')
})
//监听error事件
writer.on('drain', (err) => {
console.error(err)
})
//调用 stream.end() 且缓冲数据都已传给底层系统之后触发。
//也就是说,输入数据完成并关闭了可写流触发
writer.on('finish', () => {
console.log('数据写入完成')
})
//监听文件关闭时间
writer.on('close', () => {
console.log('可写流已被关闭,不能再写入数据')
})
//当在可读流上调用 stream.pipe() 方法时会发出 'pipe' 事件,并将此可写流添加到其目标集。
writer.on('pipe', (src) => {
console.log('有数据正通过管道流入写入器');
})
//在可读流上调用 stream.unpipe() 方法时会发出 'unpipe'事件,从其目标集中移除此可写流。
// 当可读流通过管道流向可写流发生错误时,也会触发此事件。
writer.on('unpipe', () => {
console.log('已移除可写流管道');
})
reader.pipe(writer)
reader.unpipe(writer)
writer.write('你好')
writer.end(',今天学nodejs了么')
执行结果:
![](https://img.haomeiwen.com/i22765904/a00d268f9fb7288b.png)