Golang archive压缩空文件夹

Golang archive压缩空文件夹

在压缩目录过程中发现空文件夹不能被压缩,但是空文件夹是有用的,需要在路径最后加上"/"空文件夹才可以被压缩!
还是使用zip.WriterCreate方法,比如要压缩一个名为Test的空文件夹:

var zw *zip.Writer
zw.Create("Test/")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: golang 中可以使用 os 包中的 Walk 函数来遍历文件夹。 Walk 函数需要接收两个参数:根目录路径和一个回调函数。它会将根目录和所有子目录的文件信息都传入回调函数,你可以在回调函数中对这些文件信息进行处理。 下面是一个使用 Walk 遍历文件夹的示例: ``` package main import ( "fmt" "os" "path/filepath" ) func main() { root := "path/to/root" err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if err != nil { return err } fmt.Println(path) return nil }) if err != nil { panic(err) } } ``` Walk 函数会将 root 目录下的所有文件信息都传入回调函数,你可以在回调函数中对文件进行处理。 你也可以使用 filepath.Walk 函数来遍历文件夹,它的用法和 os.Walk 函数类似。 ### 回答2: 使用Go语言遍历所有文件夹可以通过递归算法实现。具体的步骤如下: 1. 导入`os`包和`path/filepath`包。`os`包提供了操作系统相关的功能,`path/filepath`包提供了处理文件路径的方法。 2. 创建一个函数,命名为`walkDir`,用于递归遍历文件夹。该函数接收两个参数:文件夹路径和一个回调函数。 3. 在`walkDir`函数内部,使用`os.Open`打开当前文件夹,并使用`os.Readdir`读取文件夹中的所有文件和子文件夹。 4. 遍历得到的文件和子文件夹列表,通过判断是否是文件夹来确定进一步处理。如果是文件夹,则递归调用`walkDir`函数,传入子文件夹路径和回调函数。 5. 如果是文件,则将文件路径传递给回调函数进行处理。可以在回调函数中执行需要的操作,例如打印文件路径。 6. 最后,在`main`函数中调用`walkDir`函数,传入需要遍历的文件夹路径和回调函数。 下面是一个示例代码: ```go package main import ( "fmt" "os" "path/filepath" ) func walkDir(dirPath string, callback func(string)) error { fileInfos, err := os.ReadDir(dirPath) if err != nil { return err } for _, fileInfo := range fileInfos { filePath := filepath.Join(dirPath, fileInfo.Name()) if fileInfo.IsDir() { err = walkDir(filePath, callback) if err != nil { return err } } else { callback(filePath) } } return nil } func main() { dirPath := "路径/文件夹" // 替换为实际的文件夹路径 err := walkDir(dirPath, func(filePath string) { fmt.Println(filePath) }) if err != nil { fmt.Println(err) } } ``` 以上代码可以遍历指定路径下的所有文件和文件夹,并打印文件路径。可以将回调函数的逻辑替换为自己需要的操作。 ### 回答3: 在Go语言中,可以使用filepath包和os包来遍历所有文件夹。 首先,我们需要导入这两个包: ```go import ( "fmt" "os" "path/filepath" ) ``` 然后,我们可以定义一个函数来遍历文件夹,函数的参数是要遍历的文件夹路径: ```go func traverseFolders(path string) { // 使用Walk函数来遍历文件夹下的所有文件和文件夹 err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error { // 如果遍历过程中出现错误,则输出错误信息并返回错误 if err != nil { fmt.Println(err) return err } // 如果当前遍历的是文件夹,则输出文件夹路径 if info.IsDir() { fmt.Println("文件夹:", path) } return nil }) // 如果遍历过程中出现错误,则输出错误信息 if err != nil { fmt.Println(err) } } ``` 接下来,我们可以在main函数中调用这个遍历函数,并传入要遍历的文件夹路径: ```go func main() { path := "/path/to/folder" // 替换为实际的文件夹路径 traverseFolders(path) } ``` 以上就是使用Go语言遍历所有文件夹的方法。这段代码会输出所有遍历到的文件夹路径。你可以根据需要来对每个文件夹执行特定的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值