Golang下载文件显示进度条
简介如何在命令行中使用下载文件的进度条
如何在命令行中使用下载文件的进度条,在Golang中的实现如下:
安装依赖库
go get github.com/cheggaaa/pb/v3
代码实现
package main
import (
"github.com/cheggaaa/pb/v3"
"io"
"log"
"net/http"
"os"
"strconv"
"strings"
"time"
)
func main() {
url := "http://cdn.apifox.cn/download/apifox-win64-latest.zip"
//获取文件名称
urls := strings.Split(url, "/")
filename := urls[len(urls)-1]
client := http.DefaultClient
client.Timeout = 60 * 10 * time.Second
reps, err := client.Get(url)
if err != nil {
log.Panic(err.Error())
}
if reps.StatusCode == http.StatusOK {
//保存文件
file, err := os.Create(filename)
if err != nil {
log.Panic(err.Error())
}
defer file.Close() //关闭文件
//获取下载文件的大小
length := reps.Header.Get("Content-Length")
size, _ := strconv.ParseInt(length, 10, 64)
body := reps.Body //获取文件内容
bar := pb.Full.Start64(size)
bar.SetWidth(120) //设置进度条宽度
bar.SetRefreshRate(10 * time.Millisecond) //设置刷新速率
defer bar.Finish()
// create proxy reader
barReader := bar.NewProxyReader(body)
//写入文件
writer := io.Writer(file)
io.Copy(writer, barReader)
}
}
运行结果
> go run download.go
58.88 MiB / 58.88 MiB [-----------------------------------------------------------------------] 100.00% 11.46 MiB p/s 5s
打包出现如下错误:Error: Application entry file "dist\electron\main.js" in the "D:\gui\demo2\build\win-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration.
《康熙王朝》是一部非常优秀的电视连续剧,陈道明演的康熙是我觉得最有帝王气魄,让人意犹未尽,本文主要记录一小段非常经典的对白。
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
为了能让虚拟机能连接网络,并且能与宿主机能相互进行访问,所以需要多虚拟机几种网络模式进行学习,以便后期能快速的进行配置。
单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason for a class to change)。
快速生成表格
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题