Maison >développement back-end >Golang >Comment compresser le contenu d'un dossier dans Go sans inclure le dossier racine ?

Comment compresser le contenu d'un dossier dans Go sans inclure le dossier racine ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 21:46:01777parcourir

How to Zip Folder Content in Go Without Including the Root Folder?

Compression du contenu d'un dossier à l'exclusion du dossier racine

Dans Go, la compression du contenu d'un répertoire tout en excluant le dossier racine peut être réalisée à l'aide de zip .Writer.

Description du problème

Le code original vise à compresser le contenu d'un répertoire ("dir1") dans "dir1.zip". Cependant, lors de l'extraction, les fichiers compressés conservent la structure de dossiers « dir1 » comme racine. Le but est d'éliminer le dossier racine lors de l'extraction.

Solution

Pour y parvenir, nous devons modifier le champ header.Name au sein du zip.Writer. Ce champ détermine le nom du fichier dans l'archive. Dans le code d'origine, le champ est défini comme suit :

if baseDir != "" {
    header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}

Ce code garantit que le nom du fichier inclut le baseDir ("dir1") et le chemin du fichier par rapport au répertoire source ("path/dir1" ). Cependant, pour supprimer le dossier racine après extraction, il faut omettre le baseDir :

header.Name = strings.TrimPrefix(path, source)

Avec cette modification, les fichiers zippés seront directement sous la racine de l'archive, et ils n'auront pas le " dir1" comme racine lors de l'extraction.

Résultat

En omettant le baseDir du champ header.Name, le contenu du répertoire "dir1" sera compressé dans "dir1.zip" sans le dossier racine. Cela permet à l'utilisateur d'extraire les fichiers directement sans avoir à naviguer dans le dossier "dir1".

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