zip_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package test
  2. //import (
  3. // "archive/zip"
  4. // "fmt"
  5. // "io"
  6. // "os"
  7. // "os/exec"
  8. // "path/filepath"
  9. // "strings"
  10. // "testing"
  11. //)
  12. //
  13. //func TestZip(t *testing.T) {
  14. // //src := "C:\\Users\\mlxengingin\\Desktop\\0813\\go从入门到通天(20)"
  15. // //dest := "C:\\Users\\mlxengingin\\Desktop\\0813\\go从入门到通天(20).zip"
  16. // //excludeDir := "C:\\Users\\mlxengingin\\Desktop\\0813\\go从入门到通天(20)\\搜索引擎" // 你想排除的子目录
  17. // //err := ZipDir(src, dest, excludeDir)
  18. // //if err != nil {
  19. // // fmt.Println("Error:", err)
  20. // // return
  21. // //}
  22. // //fmt.Println("Zip created successfully:", dest)
  23. // ZipDir2("/root/pjirobot/data/", "/root/pjirobot/data.zip", []string{"config", "map", "mapBuf"})
  24. //}
  25. //
  26. //// 压缩指定目录到ZIP文件,并排除一个指定的子目录
  27. //func ZipDir(src, dest, excludeDir string) error {
  28. // zipf, err := os.Create(dest)
  29. // if err != nil {
  30. // return err
  31. // }
  32. // defer zipf.Close()
  33. //
  34. // archive := zip.NewWriter(zipf)
  35. // defer archive.Close()
  36. //
  37. // filepath.Walk(src, func(path string, info os.FileInfo, err error) error {
  38. // if err != nil {
  39. // return err
  40. // }
  41. //
  42. // header, err := zip.FileInfoHeader(info)
  43. // if err != nil {
  44. // return err
  45. // }
  46. //
  47. // // 修正文件路径,使其相对于src
  48. // header.Name, err = filepath.Rel(src, path)
  49. // if err != nil {
  50. // return err
  51. // }
  52. //
  53. // // 如果路径包含要排除的目录,则跳过
  54. // if strings.Contains(header.Name, excludeDir) {
  55. // if info.IsDir() {
  56. // return filepath.SkipDir // 如果是目录,则跳过整个目录
  57. // }
  58. // return nil // 如果是文件,则忽略该文件
  59. // }
  60. //
  61. // if info.IsDir() {
  62. // header.Name += "/"
  63. // } else {
  64. // header.Method = zip.Deflate
  65. // }
  66. //
  67. // writer, err := archive.CreateHeader(header)
  68. // if err != nil {
  69. // return err
  70. // }
  71. //
  72. // if !info.IsDir() {
  73. // file, err := os.Open(path)
  74. // if err != nil {
  75. // return err
  76. // }
  77. // defer file.Close()
  78. // _, err = io.Copy(writer, file)
  79. // return err
  80. // }
  81. // return nil
  82. // })
  83. //
  84. // return nil
  85. //}
  86. //func ZipDir2(src string, dest string, dirs []string) {
  87. // // 创建 zip 命令参数
  88. // args := []string{"-r", dest}
  89. // for _, dir := range dirs {
  90. // args = append(args, filepath.Join(src, dir))
  91. // }
  92. //
  93. // // 创建 zip 命令
  94. // cmd := exec.Command("zip", args...)
  95. //
  96. // // 设置工作目录
  97. // cmd.Dir = src
  98. //
  99. // // 执行 zip 命令并获取输出
  100. // fmt.Println(args)
  101. //}