Maison >développement back-end >Golang >Comment compresser des fichiers dans un dossier sans inclure le dossier racine dans l'archive ?

Comment compresser des fichiers dans un dossier sans inclure le dossier racine dans l'archive ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 03:25:12901parcourir

How to Zip Files Inside a Folder Without Including the Root Folder in the Archive?

Compression du contenu dans un dossier sans inclure le dossier racine

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn