Maison >développement back-end >Golang >Comment compresser des fichiers dans un dossier sans inclure le dossier racine dans l'archive ?
Problème : La compression des fichiers dans un dossier entraîne une structure extraite qui inclut la racine dossier, alors que le résultat souhaité est d'extraire les fichiers sans le dossier racine.
Code Tentative :
Le code suivant est une tentative de compression de la structure du répertoire :
func Zipit(source, target string) error { zipfile, err := os.Create(target) ... header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) ... }
Dépannage :
Dans le code fourni , le problème réside dans la ligne où le baseDir est ajouté au header.Name. Pour exclure le dossier racine de la structure extraite, supprimez le baseDir du nom de fichier.
Solution :
Remplacez la ligne suivante :
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
avec :
header.Name = strings.TrimPrefix(path, source)
Alternative Approches :
Au lieu de modifier manuellement le nom de l'en-tête, vous pouvez également utiliser l'approche alternative suivante pour exclure le dossier racine lors de l'extraction :
walker := filepath.Walk(source, func(path string, info os.FileInfo, err error) error { // Ignore the root directory if info.IsDir() && path == source { return filepath.SkipDir } ... })
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!