Problem: Reißverschlussdateien in einem Ordner führt zu einer extrahierten Struktur, die die Root enthält Ordner, während das gewünschte Ergebnis darin besteht, die Dateien ohne den Stammordner zu extrahieren.
Code Versuch:
Der folgende Code ist ein Versuch, die Verzeichnisstruktur zu zippen:
func Zipit(source, target string) error { zipfile, err := os.Create(target) ... header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) ... }
Fehlerbehebung:
In dem angegebenen Code befinden sich das Problem in der Zeile, in der das basierte Basiert zum Header hinzugefügt wird. Um den Root -Ordner aus der extrahierten Struktur auszuschließen, entfernen Sie den basieren aus dem Dateinamen.
Lösung:
ersetzen Sie die folgende Zeile:
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
mit:
header.Name = strings.TrimPrefix(path, source)
Alternative Ansätze:
Anstatt den Header -Namen manuell zu ändern, können Sie auch den folgenden alternativen Ansatz verwenden, um den Stammordner während des Ausschlusses auszuschließen Extraktion:
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 } ... })
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3