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
Libérer: 2024-11-29 03:25:12
original
962 Les gens l'ont consulté

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))
    ...
}
Copier après la connexion

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))
Copier après la connexion

avec :

header.Name = strings.TrimPrefix(path, source)
Copier après la connexion

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
    }
    ...
})
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal