Compression du contenu sans le dossier racine
Dans Go, lors de la compression d'un répertoire, il est courant d'inclure le dossier racine dans l'archive . Cependant, il existe des scénarios dans lesquels vous souhaiterez peut-être exclure le dossier racine pour garantir que seul le contenu est extrait.
Pour y parvenir, la fonction Zipit que vous avez fournie nécessite une petite modification :
header.Name = strings.TrimPrefix(path, source)
Dans le code d'origine, la ligne header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) ajoute le nom du répertoire de base (par exemple, "dir1") au nom de fichier dans l'archive. En le remplaçant par le code ci-dessus, le nom du répertoire de base est omis.
Par conséquent, lorsque vous extrayez le fichier ".zip", vous obtiendrez le contenu sans le dossier "dir1" comme racine répertoire.
// 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 }
Maintenant, lorsque vous appelez Zipit en utilisant :
Zipit("dir1/", "dir1.zip")
Le fichier ".zip" résultant contiendra uniquement le contenu de "dir1" sans le dossier "dir1" comme répertoire racine lors de l'extraction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!