gpt4 book ai didi

GO zip.NewWriter() 创建空的 zip 文件

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:22 24 4
gpt4 key购买 nike

我尝试将以下功能简化为仅将单个文件添加到 .zip 存档。

无论我尝试什么,生成的 .zip 文件中都没有列出任何文件。存档的大小是正确的。但是当我尝试提取所有 (windows) 时,存档是空的。

go版本go1.10.1 windows/amd64

func Zip(src string, dst string) error {
destinationFile, err := os.Create(dst)
if err != nil {
return err
}
myZip := zip.NewWriter(destinationFile)
file := `C:\MA\testing\cldeploy-local.json`
zipFile, err := myZip.Create(file)

fsFile, err := os.Open(file)
if err != nil {
return err
}
_, err = io.Copy(zipFile, fsFile)
if err != nil {
return err
}
return nil

if err != nil {
return err
}
err = myZip.Close()
if err != nil {
return err
}
return nil
}

当我提取文件时出现一条错误消息:压缩的(zipped)文件夹...无效。

最佳答案

正如@JimB 的回答:文件需要添加为相对路径只有正斜杠。不能以斜杠开头

func Zip(src string, dst string) error {
destinationFile, err := os.Create(dst)
if err != nil {
return err
}
myZip := zip.NewWriter(destinationFile)
file := `C:\MA\testing\cldeploy-local.json`

// file needs to be added as relative path
// only forward slashes. can not start with slash
relPath := strings.TrimPrefix(file, filepath.Dir(src))
relPath = strings.Replace(relPath, `\`, `/`, -1)
relPath = strings.TrimLeft(relPath, `/`)

zipFile, err := myZip.Create(relPath)

fsFile, err := os.Open(file)
if err != nil {
return err
}
_, err = io.Copy(zipFile, fsFile)
if err != nil {
return err
}
return nil

if err != nil {
return err
}
err = myZip.Close()
if err != nil {
return err
}
return nil
}

关于GO zip.NewWriter() 创建空的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55525639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com