V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
chen0520
V2EX  ›  Go 编程语言

golang 如何实现解压各种文件并附带 console 进度条

  •  
  •   chen0520 · 8 天前 · 1572 次点击

    mholt/archiver 这个库好像并没有带进度的回调,gpt 搜了几个实现,感觉都不太行,有人做过类似的功能吗? 我看实际解压文件,这类进度基本都是带的啊,实现应该都不复杂啊

    8 条回复    2025-08-28 10:52:08 +08:00
    ysicing
        1
    ysicing  
       8 天前
    https://github.com/cheggaaa/pb 你说这个么,我用这个弄过文件操作的进度条。感觉好像没太大场景吧🤔
    lqs
        2
    lqs  
       8 天前
    写文件的时候,自己累加 Write 的大小,或用 TeeReader 写到计数器
    Sendya
        3
    Sendya  
       8 天前
    很多进度都是伪进度,通过 进度=current/total*100 。
    但是我看了眼你描述的这个库,作者有提供一个思路是非常好的,通过读取与写出的 buf 大小累计,可以得出进度,因为原始压缩文件的大小是可以在 OpenFile 返回的 File.Stat() 取到,在计算百分比进度就可以了,这个准确度比通过 已经解压的文件数/总文件数*100 来的更准确些

    https://github.com/mholt/archives/issues/16#issuecomment-2651918336
    lolico
        4
    lolico  
       8 天前 via iPhone
    可以看下 progressbar
    PungentSauce
        6
    PungentSauce  
       8 天前
    我也是用的楼上 github.com/schollz/progressbar 下载文件配合 progressbar 库实现的进度条
    Mohanson
        7
    Mohanson  
       8 天前
    sthwrong
        8
    sthwrong  
       7 天前
    进度条库好找,不过 op 可能想要的是 3 楼的答案,也就是从哪里取得进度数据给进度条实现使用。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4223 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:09 · PVG 12:09 · LAX 21:09 · JFK 00:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.