例:比较fs.readFile和可读流的读取方式
const fs = require('fs')
//传统的读取方式:一次性读取文件的全部内容。
fs.readFile('./foo.txt',(err, data) => {
console.log(data)
})
//通过流的方式读取:可以更精准的控制从哪个位置开始读取,读取到哪个位置停止,一次读取多少个字节
//1.创建可读流:fs.ReadStream 类的对象,继承自: <stream.Readable>
const reader = fs.createReadStream('./foo.txt', {
start: 3, //从第几个字节开始读取
end: 10, //读取到第几个字节停止
highWaterMark: 2, //一次读取几个字节
})
//2.读取可读流中的内容
reader.on('data', (chunk) => {
//如果使用 readable.setEncoding() 为流指定了默认的字符编码,则监听器回调传入的数据为字符串,否则传入的数据为 Buffer。
console.log(chunk)
})
reader.on('open', () => {
console.log('文件已打开')
})
reader.on('ready', () => {
console.log('文件已准备好使用')
})
reader.on('close', () => {
console.log('文件已关闭')
})
执行结果:
image.png
网友评论