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!