go 语言文件操作:读取压缩文件 | go 技术论坛-金年会app官方网
1 读取zip压缩文件
在golang官方库中有archive/zip来帮助我们读取zip格式的压缩文件,常见步骤如下
a) 实例化一个zip文件读取器使用zip.openreader
b) 获取到zip文件中的file信息
c) 根据file的信息创建一个本地路径的一个对应文件操作句柄
d) 将压缩文件解压到对应的文件中
e) 关闭各个文件操作句柄
示例代码
func main() {
if len(os.args) != 2 {
fmt.println("lack of file")
return
}
if !strings.contains(os.args[1], ".zip") {
fmt.println("the file is not zip format")
return
}
//打开一个zip读取器
newzipreader, err := zip.openreader(os.args[1])
if nil != err {
fmt.println(err)
return
}
//退出前关闭
defer newzipreader.close()
//读取zip文件的信息
for _, f := range newzipreader.file {
if f.fileinfo().isdir() {
fmt.println(f.name, "是一个目录")
} else {
fmt.println(f.name, "是一个文件")
}
}
}
运行结果
nothin:~/gopractice$ go run ./readzip/main.go ./test.zip
flags/ 是一个目录
flags/flag2 是一个文件
flags/flag 是一个文件
flags/main.go 是一个文件
readzip/ 是一个目录
readzip/main.go 是一个文件
go.mod 是一个文件
buffer/ 是一个目录
buffer/main.go 是一个文件
flags/zip1/ 是一个目录
flags/zip1/test.txt 是一个文件
参考: