ZBLOG

go语言,将指定的几个文件打包进一个压缩包内,还放在这几个文件的同目录下就行

你可以使用Go语言的archive/zip包来实现将指定文件打包成一个压缩包的功能。以下是一个示例代码:

  1. package main
  2. import (
  3. "archive/zip"
  4. "fmt"
  5. "io"
  6. "os"
  7. "path/filepath"
  8. )
  9. func ZipFiles(files []string, dest string) error {
  10. newZipFile, err := os.Create(dest)
  11. if err != nil {
  12. return err
  13. }
  14. defer newZipFile.Close()
  15. zipWriter := zip.NewWriter(newZipFile)
  16. defer zipWriter.Close()
  17. for _, file := range files {
  18. err = addFileToZip(zipWriter, file)
  19. if err != nil {
  20. return err
  21. }
  22. }
  23. fmt.Println("打包成功!")
  24. return nil
  25. }
  26. func addFileToZip(zipWriter *zip.Writer, filename string) error {
  27. fileToZip, err := os.Open(filename)
  28. if err != nil {
  29. return fmt.Errorf("无法打开文件:%s\n%v", filename, err)
  30. }
  31. defer fileToZip.Close()
  32. info, err := fileToZip.Stat()
  33. if err != nil {
  34. return fmt.Errorf("无法获取文件信息:%s\n%v", filename, err)
  35. }
  36. header, err := zip.FileInfoHeader(info)
  37. if err != nil {
  38. return fmt.Errorf("无法创建文件头:%s\n%v", filename, err)
  39. }
  40. header.Name = filepath.Base(filename)
  41. writer, err := zipWriter.CreateHeader(header)
  42. if err != nil {
  43. return fmt.Errorf("无法创建压缩文件:%s\n%v", header.Name, err)
  44. }
  45. io.Copy(writer, fileToZip)
  46. return nil
  47. }
  48. func main() {
  49. files := []string{
  50. "/path/to/file1.txt",
  51. "/path/to/file2.txt",
  52. // 添加更多文件路径
  53. }
  54. dest := "/path/to/archive.zip" // 替换为你想要保存的压缩包路径和名称
  55. err := ZipFiles(files, dest)
  56. if err != nil {
  57. fmt.Printf("打包失败:%v\n", err)
  58. }
  59. }

请确保替换files变量中的文件路径列表和dest变量中的压缩包路径和名称为你实际想要使用的路径和名称。函数ZipFiles将会将指定的文件打包成一个压缩包,并保存在指定的位置。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=12504

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?