„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie zip -Dateien in einem Ordner ohne den Stammordner in das Archiv einbeziehen?

Wie zip -Dateien in einem Ordner ohne den Stammordner in das Archiv einbeziehen?

Gepostet am 2025-02-26
Durchsuche:764

How to Zip Files Inside a Folder Without Including the Root Folder in the Archive?

Inhalte in einem Ordner ohne Einbeziehung des Root -Ordners

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
    }
    ...
})
Neuestes Tutorial Mehr>

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