golang如何在go中使用bzip2将多个文件压缩为单个文件(代码片段)

author author     2023-02-01     184

关键词:

func bz2CompressFiles(dstPath string, srcFiles []string) 
	os.Remove(dstPath)

	fileOut, err := os.Create(dstPath)
	u.PanicIfErr(err)

	cmd := exec.Command("bzip2", "--best", "-z")
	cmd.Stdout = fileOut
	stdin, err := cmd.StdinPipe()
	u.PanicIfErr(err)
	err = cmd.Start()
	u.PanicIfErr(err)

	var srcSize int64
	for _, fileName := range srcFiles 
		fi, err := os.Stat(fileName)
		u.PanicIfErr(err)
		srcSize += fi.Size()
		r, err := os.Open(fileName)
		u.PanicIfErr(err)
		_, err = io.Copy(stdin, r)
		u.PanicIfErr(err)
		r.Close()
	
	err = stdin.Close()
	u.PanicIfErr(err)
	err = cmd.Wait()
	u.PanicIfErr(err)
	err = fileOut.Close()
	u.PanicIfErr(err)

	fi, err := os.Stat(dstPath)
	u.PanicIfErr(err)
	srcSizeStr := humanize.Bytes(uint64(srcSize))
	dstSizeStr := humanize.Bytes(uint64(fi.Size()))
	fmt.Printf("compressed %s to %s, %d files to %s\n", srcSizeStr, dstSizeStr, len(srcFiles), dstPath)
	for i := 0; i < len(srcFiles) && i < 0; i++ 
		fmt.Printf("%s\n", srcFiles[i])
	

如何使用golang在clickhouse中使用一个命令插入csv文件

】如何使用golang在clickhouse中使用一个命令插入csv文件【英文标题】:Howtoinsertcsvfileusingonecommandinclickhouseusinggolang【发布时间】:2022-01-2200:48:02【问题描述】:有没有办法在一个命令中使用这个golibraryhttps://github.com/ClickHouse/clickhous... 查看详情

『golang』包(代码片段)

可见性规则在Go语言中,标识符必须以一个大写字母开头,这样才可以被外部包的代码所使用,这被称为导出。标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的。但是包名不管在什... 查看详情

go语言(十一):开始使用多模块工作区

...的目录。3、初始化模块我们的示例将创建一个hello依赖于golang.org/x/example模块的新模块。创建你好模块:使用.添加对golang.org/x/example模块的依赖项goget。在hello目录下创建hello.go,内容如下:现在,运行hello程序:在这一步中,我... 查看详情

在 Go (Golang) 中查找文件系统对象

】在Go(Golang)中查找文件系统对象【英文标题】:FindfilesystemobjectsinGo(Golang)【发布时间】:2021-12-0815:33:08【问题描述】:我正在尝试使用Go查找匹配的文件系统对象并确定我作为输入接收到的路径类型。具体来说,如果对象与提供... 查看详情

gomodule(代码片段)

gomodules是golang1.11新加的特性。现在1.13已经发布了,是时候用起来了。Modules官方定义为:模块是相关Go包的集合。modules是源代码交换和版本控制的单元。go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替... 查看详情

golang项目中使用条件编译

参考技术Agolang中没有类似C语言中条件编译的写法,比如在C代码中可以使用如下语法做一些条件编译,结合宏定义来使用可以实现诸如按需编译release和debug版本代码的需求buildtags是通过代码注释的形式实现的,要写在文件的最顶... 查看详情

如何在golang中使用LDFLAGS的相对路径

】如何在golang中使用LDFLAGS的相对路径【英文标题】:HowtousearelativepathforLDFLAGSingolang【发布时间】:2015-03-1805:42:06【问题描述】:我正在尝试构建一个使用静态库(.a文件)的golang程序我的项目的目录结构如下└─testserver├─bin... 查看详情

在 sqlplus 中使用假脱机运行多个查询

...将结果保存到文件中但这会将整个结果保存到一个文件中如何将每个查询结果导出到专用文件中?【问题讨论】:【参考方案1】:在每个SELECT之间使用多个假脱机语句例如,spoolc:\\ 查看详情

golang包结构(代码片段)

golang包管理一、GOPATHGOPATH:进行golang开发时的工作空间,你编写的go源代码和编译后生成的可执行程序都将存放在GOPATH下。注意,GOPATH只是一个普通的文件目录并且你所有的编码工作都应该在该目录下完成(golang1.11版本引入包依... 查看详情

go语言入门150题l1-069胎压监测(15分)go语言|golang(代码片段)

...】【PTA团体程序设计天梯赛】L1-069胎压监测(15分)Go语言|Golang让我们把四个车轮——左前轮、右前轮、右后轮、左后轮——顺次编号为1、2、3、4。本题就请你编写一个监测程序,随时监测四轮的胎压,并给出正确的报警信... 查看详情

如何在 Golang 中使用动态键解析 YAML

】如何在Golang中使用动态键解析YAML【英文标题】:HowtoparseYAMLwithdynamickeyinGolang【发布时间】:2015-11-1519:29:25【问题描述】:我正在尝试使用Go解析YAML文件。问题是YAML文件中的键可能并不总是相同的。这是为了进行API版本控制,... 查看详情

如何使用 Go 有效地下载大文件?

】如何使用Go有效地下载大文件?【英文标题】:HowcanIefficientlydownloadalargefileusingGo?【发布时间】:2012-07-2717:38:52【问题描述】:有没有办法使用Go下载大文件,将内容直接存储到文件中,而不是在将内容写入文件之前将其全部存... 查看详情

golang中自定义包

参考技术Agolang中默认以文件夹名作为包名,导入的文件的路径为$GOPATH/src例如我们在$GOPATH/src下面建立一个gopackage的一个文件夹,下面建立一个abc.go的文件,文件内容如下则我们在包外部使用gopackage包中的函数时,导入格式是这... 查看详情

如何在golang go-face中捕获每张脸

】如何在golanggo-face中捕获每张脸【英文标题】:HowtoCaptureeachfaceingolanggo-face【发布时间】:2021-07-0821:12:42【问题描述】:我在GoLang中使用https://github.com/Kagami/go-face进行人脸识别,我尝试了go-face库中给出的示例。在该示例中,它... 查看详情

golang中的init函数

...使用导入的包,需要先将包初始化,初始化及顺序问题由Golang的runningsystem完成。Go里面的一个包可以包含多个文件。分布在众多包中的众多文件,变量和init函数执行的顺序应该是什么样子呢?之前的文章提到了变量的初始化顺... 查看详情

如何在 golang 的同一个处理程序中处理多个 POST 请求?

】如何在golang的同一个处理程序中处理多个POST请求?【英文标题】:HowtohandlemultiplePOSTrequestsinsamehandleringolang?【发布时间】:2022-01-2101:29:16【问题描述】:我要执行的signup.html文件中有两个表单。第一个表单重定向到/login,但不... 查看详情

如何在 java 中读取 .gz 或 .bzip2 文件

】如何在java中读取.gz或.bzip2文件【英文标题】:Howtoreada.gzor.bzip2fileinjava【发布时间】:2014-08-1520:50:24【问题描述】:我有.gz和.bzip2文件,我需要提取和显示这些文件。我看了几个地方,它提到使用zip4j实用程序。我可以用它来... 查看详情

如何在 Golang 中使用 Mkdir 创建嵌套目录?

】如何在Golang中使用Mkdir创建嵌套目录?【英文标题】:HowtocreatenesteddirectoriesusingMkdirinGolang?【发布时间】:2015-04-1111:32:57【问题描述】:我正在尝试从Go可执行文件(例如“dir1/dir2/dir3”)创建一组嵌套目录。我已经成功地用这... 查看详情