在Go语言中,我们可以使用archive/zip
库来创建ZIP压缩文件。以下是一段简单的示例代码,用于创建一个ZIP文件并将一个文件添加到其中。
首先,你需要在你的Go代码中导入archive/zip
库。
import (
"archive/zip"
"io"
"os"
)
然后,你可以创建一个函数来压缩文件。这个函数会接受一个源文件路径和一个目标ZIP文件路径作为参数。
func ZipFile(source string, target string) error {
// 创建一个新的zip文件
zf, err := zip.OpenWriter(target)
if err != nil {
return err
}
defer zf.Close()
// 打开源文件
srcFile, err := os.Open(source)
if err != nil {
return err
}
defer srcFile.Close()
// 获取源文件的信息以设置压缩文件的元数据(例如,文件名和修改时间)
info, err := srcFile.Stat()
if err != nil {
return err
}
// 创建一个新的文件头
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
// 设置文件头名称为源文件的基本名称
header.Name = filepath.Base(source)
// 创建一个新的文件写入器并将文件头添加到zip文件中
writer, err := zf.CreateHeader(header)
if err != nil {
return err
}
defer writer.Close()
// 将源文件的内容复制到压缩文件中
_, err = io.Copy(writer, srcFile)
if err != nil {
return err
}
return nil
}
现在你可以使用这个函数来压缩文件了。例如:
err := ZipFile("source.txt", "target.zip")
if err != nil {
fmt.Println(err)
} else {
fmt.Println("File has been zipped successfully!")
}
以上的代码中,ZipFile
函数会创建一个新的ZIP文件,打开源文件,并获取源文件的信息以设置压缩文件的元数据(例如,文件名和修改时间)。然后它会创建一个新的文件头,并将文件头添加到ZIP文件中。最后,它会将源文件的内容复制到压缩文件中。