commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// zip优缺点
|
||||
|
||||
|
||||
func main() {
|
||||
// 需要压缩的文件路径
|
||||
fileToZip := "test.txt"
|
||||
// 压缩后的文件名
|
||||
zipFileName := "test.zip"
|
||||
|
||||
// 创建一个新的zip文件
|
||||
zipFile, err := os.Create(zipFileName)
|
||||
if err != nil {
|
||||
fmt.Println("创建zip文件失败:", err)
|
||||
return
|
||||
}
|
||||
defer zipFile.Close()
|
||||
|
||||
// 使用zip.Writer将文件写入到zip文件中
|
||||
zipWriter := zip.NewWriter(zipFile)
|
||||
defer zipWriter.Close()
|
||||
|
||||
// 添加文件到zip文件中
|
||||
err = addFileToZip(fileToZip, zipWriter)
|
||||
if err != nil {
|
||||
fmt.Println("添加文件到zip失败:", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("文件压缩成功")
|
||||
}
|
||||
|
||||
func addFileToZip(filePath string, zipWriter *zip.Writer) error {
|
||||
// 打开需要压缩的文件
|
||||
fileToZip, err := os.Open(filePath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fileToZip.Close()
|
||||
|
||||
// 获取文件信息
|
||||
fileInfo, err := fileToZip.Stat()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 将文件添加到zip文件中
|
||||
fileHeader, err := zip.FileInfoHeader(fileInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fileHeader.Name = filepath.Base(filePath)
|
||||
writer, err := zipWriter.CreateHeader(fileHeader)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = io.Copy(writer, fileToZip)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user