node 可读流 读取文件百分比显示进度

node 可读流 读取文件百分比显示进度

标签: Node


效果如下

image_1ba1qg620cer113sabd1fq8cm3s.png-33.2kB

源码

const fs = require( 'fs' )
const path = require( 'path' )
const src = path.join( __dirname, './movie.avi' )

// 根据指定的文件创建一个可读流,得到一个可读流对象
let readStream = fs.createReadStream( src )

let totalSize = fs.statSync( src ).size  // 通过 fs.statSync 获取文件大小
let curSize = 0
let percent = '0%'

// 流对象有一个 data 事件,流对象会自动的帮我们去读取文件中的数据
// 一点一点的读,只要读到了一点数据,就触发 data 事件,将该数据传递给 data 事件的回调函数
readStream.on( 'data', ( chunk ) => { 
    // chunk 数据块
    // 计算当前读取到的文件的大小,计算读取的顺序
    // chunk 是一个 buffer 对象
    // 每一次读取到了一点数据,将该数据的长度累加起来 / 文件的总大小 * 100 得到百分比
    curSize += chunk.length
    // 将已经读取到的字节数 / 总字节数 * 100 = 百分比
    percent = (curSize / totalSize * 100).toFixed( 2 ) + '%'
    console.log( '读取中' + percent )
})

// end 事件监听读写结束
readStream.on( 'end', () => {
    console.log( '读取结束' )
})


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值