Heim >Backend-Entwicklung >Golang >Wie komprimiere ich Ordnerinhalte in Go, ohne den Stammordner einzubeziehen?
Inhalt aus einem Ordner ohne Stammordner komprimieren
In Go kann das Komprimieren des Inhalts innerhalb eines Verzeichnisses unter Ausschluss des Stammordners mit zip erreicht werden .Autor.
Problem Beschreibung
Der Originalcode zielt darauf ab, den Inhalt eines Verzeichnisses („dir1“) in „dir1.zip“ zu komprimieren. Beim Extrahieren behalten die komprimierten Dateien jedoch die Ordnerstruktur „dir1“ als Stammordner bei. Das Ziel besteht darin, den Stammordner beim Extrahieren zu entfernen.
Lösung
Um dies zu erreichen, müssen wir das Feld header.Name im zip.Writer ändern. Dieses Feld bestimmt den Namen der Datei im Archiv. Im Originalcode ist das Feld wie folgt festgelegt:
if baseDir != "" { header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) }
Dieser Code stellt sicher, dass der Dateiname das Basisverzeichnis („dir1“) und den Pfad der Datei relativ zum Quellverzeichnis („path/dir1“) enthält. ). Um jedoch den Stammordner nach der Extraktion zu entfernen, müssen wir das Basisverzeichnis weglassen:
header.Name = strings.TrimPrefix(path, source)
Mit dieser Änderung befinden sich die gezippten Dateien direkt unter dem Stammverzeichnis des Archivs und haben nicht das „ Ordner „dir1“ als Stammverzeichnis beim Extrahieren.
Ergebnis
Durch Weglassen des Basisverzeichnisses aus dem header.Name-Feld wird der Inhalt des Verzeichnisses „dir1“ ohne den Stammordner in „dir1.zip“ gezippt. Dadurch kann der Benutzer die Dateien direkt extrahieren, ohne durch den Ordner „dir1“ navigieren zu müssen.
Das obige ist der detaillierte Inhalt vonWie komprimiere ich Ordnerinhalte in Go, ohne den Stammordner einzubeziehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!