代码拉取完成,页面将自动刷新
package xutil
import (
"archive/zip"
"fmt"
"io"
"os"
"path"
"path/filepath"
"strings"
)
func F打包目录(src_dir string, zip_file_name string) {
// 预防:旧文件无法覆盖
os.RemoveAll(zip_file_name)
// 创建:zip文件
zipfile, _ := os.Create(zip_file_name)
defer zipfile.Close()
// 打开:zip文件
archive := zip.NewWriter(zipfile)
defer archive.Close()
// 遍历路径信息
filepath.Walk(src_dir, func(path string, info os.FileInfo, _ error) error {
// 如果是源路径,提前进行下一个遍历
if path == src_dir {
return nil
}
// 获取:文件头信息
header, _ := zip.FileInfoHeader(info)
header.Name = strings.TrimPrefix(path, src_dir+`/`)
// 判断:文件是不是文件夹
if info.IsDir() {
header.Name += `/`
} else {
// 设置:zip的文件压缩算法
header.Method = zip.Deflate
}
// 创建:压缩包头部信息
writer, _ := archive.CreateHeader(header)
if !info.IsDir() {
file, _ := os.Open(path)
defer file.Close()
io.Copy(writer, file)
}
return nil
})
}
func F新打包目录(src_dir string, pathname string, 是否铺平 ...int) {
// 预防:旧文件无法覆盖
os.RemoveAll(pathname)
// 创建:zip文件
zipfile, _ := os.Create(pathname)
defer zipfile.Close()
// 打开:zip文件
archive := zip.NewWriter(zipfile)
defer archive.Close()
// 遍历路径信息
filepath.Walk(src_dir, func(path string, info os.FileInfo, _ error) error {
//fmt.Println("srcdir", src_dir, "path", path)
// 如果是源路径,提前进行下一个遍历
if path == src_dir {
return nil
}
if info.Name() == pathname {
return nil
}
if filepath.Ext(info.Name()) == filepath.Ext(pathname) {
return nil
}
// 获取:文件头信息
header, _ := zip.FileInfoHeader(info)
if len(是否铺平) == 0 {
header.Name = path
} else {
header.Name = filepath.Base(path)
}
//header.Name = strings.TrimPrefix(path, src_dir)
// 判断:文件是不是文件夹
if info.IsDir() {
header.Name += `/`
} else {
// 设置:zip的文件压缩算法
header.Method = zip.Deflate
}
// 创建:压缩包头部信息
writer, _ := archive.CreateHeader(header)
if !info.IsDir() {
file, _ := os.Open(path)
defer file.Close()
io.Copy(writer, file)
}
return nil
})
}
// 传文件路径与名字,会直接在路径的目录压缩并删除原文件
func F单独压缩一个文件(pat string) {
fileNameWithSuffix := path.Base(pat)
//fmt.Println("fil", fileNameWithSuffix)
pat1 := strings.TrimSuffix(pat, path.Ext(pat)) + ".zip"
zipfile, _ := os.Create(pat1)
defer zipfile.Close()
// 打开:zip文件
archive := zip.NewWriter(zipfile)
defer archive.Close()
w1, err := archive.Create(fileNameWithSuffix)
if err != nil {
fmt.Println("压缩文件异常", err.Error())
return
}
f1, err := os.Open(pat)
if err != nil { //如果文件不存在,这里会报错
return
}
if _, err := io.Copy(w1, f1); err != nil {
fmt.Println("压缩文件异常", err.Error())
}
f1.Close()
//删除文件
err = os.RemoveAll(pat)
if err != nil {
fmt.Println("err", err.Error())
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。