Mengzip Kandungan Tanpa Folder Root
Dalam Go, apabila mengezip direktori, adalah perkara biasa untuk memasukkan folder akar sebagai sebahagian daripada arkib . Walau bagaimanapun, terdapat senario di mana anda mungkin ingin mengecualikan folder akar untuk memastikan hanya kandungan yang diekstrak.
Untuk mencapai ini, fungsi Zipit yang anda sediakan memerlukan pengubahsuaian kecil:
header.Name = strings.TrimPrefix(path, source)
Dalam kod asal, pengepala baris.Nama = filepath.Join(baseDir, strings.TrimPrefix(path, source)) menambah nama direktori asas (cth., "dir1") pada nama fail dalam arkib. Dengan menggantikan ini dengan kod di atas, nama direktori asas ditinggalkan.
Akibatnya, apabila anda mengekstrak fail ".zip", anda akan memperoleh kandungan tanpa folder "dir1" sebagai akar direktori.
// Modified Zipit function func Zipit(source, target string) error { zipfile, err := os.Create(target) if err != nil { return err } defer zipfile.Close() archive := zip.NewWriter(zipfile) defer archive.Close() info, err := os.Stat(source) if err != nil { return nil } // Remove the base directory name filepath.Walk(source, func(path string, info os.FileInfo, err error) error { if err != nil { return err } header, err := zip.FileInfoHeader(info) if err != nil { return err } // Trim the base directory name from the filename header.Name = strings.TrimPrefix(path, source) if info.IsDir() { header.Name += "/" } else { header.Method = zip.Deflate } writer, err := archive.CreateHeader(header) if err != nil { return err } if info.IsDir() { return nil } file, err := os.Open(path) if err != nil { return err } defer file.Close() _, err = io.Copy(writer, file) return err }) return err }
Sekarang, apabila anda memanggil Zipit menggunakan:
Zipit("dir1/", "dir1.zip")
".zip" yang terhasil fail hanya akan mengandungi kandungan "dir1" tanpa folder "dir1" sebagai direktori akar selepas pengekstrakan.
Atas ialah kandungan terperinci Bagaimana untuk Zip Direktori dalam Go Tanpa Termasuk Folder Root?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!