例1:创建可读流,并读取其中的是数据
const fs = require('fs')
//创建可读流,设置读取范围和一次读取多少个字节
const reader = fs.createReadStream('baz.txt',{
start:3,
end:11,
highWaterMark: 3
})
console.log('文件未打开', reader.pending)
//想要读取到可读流的数据,需要监听data事件
reader.on('data', (data) => {
console.log(data)
console.log('到目前为止已读取%d个字节', reader.bytesRead)
//暂停读取
reader.pause()
//设置过2秒钟读取一次数据
setTimeout(() => {
//恢复读取
reader.resume()
}, 2000)
})
reader.on('open', () => {
console.log('文件已打开', reader.pending)
})
reader.on('ready', () => {
console.log('数据已准备好读取', reader.pending)
})
reader.on('close', () => {
console.log('数据已读完')
console.log('读取的文件路径为:' + reader.path)
})
执行结果:
![](https://img.haomeiwen.com/i22765904/81a2b0e31d855520.png)
例2:如果指定了 fd,则 ReadStream 会忽略 path 参数,并且会使用指定的文件描述符。
const fs = require('fs')
const fd = fs.openSync('foo.txt')
//创建可读流,设置读取范围和一次读取多少个字节
const reader = fs.createReadStream('baz.txt',{
fd: fd,//如果指定了 fd,则 ReadStream 会忽略 path 参数,并且会使用指定的文件描述符。
start:3,
end:11,
highWaterMark: 3
})
console.log('文件未打开', reader.pending)
//想要读取到可读流的数据,需要监听data事件
reader.on('data', (data) => {
console.log(data)
console.log('到目前为止已读取%d个字节', reader.bytesRead)
//暂停读取
reader.pause()
//设置过2秒钟读取一次数据
setTimeout(() => {
//恢复读取
reader.resume()
}, 2000)
})
reader.on('open', () => {
console.log('文件已打开', reader.pending)
})
reader.on('ready', () => {
console.log('数据已准备好读取', reader.pending)
})
reader.on('close', () => {
console.log('数据已读完')
console.log('读取的文件路径为:' + reader.path)
})
执行结果:
![](https://img.haomeiwen.com/i22765904/9c45793fd7135bf0.png)
网友评论