fs-模块fs.createReadStream创建可读流

2021-02-24  本文已影响0人  静昕妈妈芦培培

例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)
})

执行结果:


image.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)
})

执行结果:


image.png
上一篇 下一篇

猜你喜欢

热点阅读