Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Archive bündeln mehrere Dateien in einem einzigen Format, normalerweise zip, tar oder rar. Archivdateien können auch eine Komprimierung verwenden, um die Gesamtdateigröße zu reduzieren.

Sie können Archive verwenden, um Software und Daten, einschließlich Webseiten, zu verteilen. Sie können Ihre Anwendung auch mit all ihren Dateien und Abhängigkeiten archivieren, damit Benutzer sie herunterladen und installieren können.

Mit dem Archivpaket von Go können Sie Archive in den Formaten tar und zip erstellen und extrahieren.

Gos Archivpaket

Go bietet Archiv Pakete für die Arbeit mit verschiedenen Archivformaten. Du kannst den... benutzen Reißverschluss Und Teer Pakete zum Erstellen, Lesen und Schreiben von Archivdateien in diesen Formaten. Beide Pakete unterstützen verschiedene Komprimierungsalgorithmen über eine benutzerfreundliche API.

instagram viewer

So können Sie die ZIP- und TAR-Pakete in Ihre Go-Dateien importieren:

importieren (
"archivieren/zip"
"archiv/tar"
)

Nach dem Import der Pakete können Sie diese verwenden, um Archivdateien zu erstellen und zu manipulieren.

Erstellen und Hinzufügen von Dateien zu Tar-Archiven

Der Teer Paket funktioniert mit tar Archive der Formate tar und tar.gz, einschließlich Unterstützung für das Lesen und Schreiben von Dateien mit erweiterten PAX-Headern.

Das tar-Paket bietet a NeuerWriter Funktion zum Erstellen neuer Tar-Archive. NewWriter übernimmt eine io. Schriftsteller Schnittstelleninstanz, die eine Datei oder ein Speicherpuffer sein kann und einen Zeiger auf die zurückgibt Teer. Schriftsteller Struktur.

Paket hauptsächlich

importieren (
"archiv/tar"
"os"
)

Funkhauptsächlich() {
// Erstellen Sie eine neue Datei
Datei, _ := os. Erstellen("meinarchiv.tar")
verschieben Datei. Schließen()

// Erstellen Sie ein neues Tar-Archiv
tarWriter := tar. NewWriter (Datei)
verschieben tarWriter. Schließen()
}

Der Erstellen Funktion der os Paket erstellt eine neue Tar-Datei. Der Teer. NeuerWriter Funktion übernimmt eine Datei und erstellt ein neues Archiv.

Sie können Dateien mit dem tar-Archiv hinzufügen WriteHeader Und Schreiben Funktionen. Die WriteHeader-Funktion benötigt a Teer. Header struct als Argument. Diese enthält die Metadaten der Datei, wie Dateiname, Größe und Berechtigungsbits. Die Write-Funktion schreibt den Inhalt einer Datei in das Archiv.

importieren (
"archiv/tar"
"fmt"
"io"
"Protokoll"
"os"
)

Funkhauptsächlich() {
// Erstellen Sie eine neue Datei
Datei, _ := os. Erstellen("meinarchiv.tar")
Datei, _ = os. Erstellen("nachricht.txt")
verschieben Datei. Schließen()

// Erstellen Sie ein neues Tar-Archiv
tarWriter := tar. NewWriter (Datei)
verschieben tarWriter. Schließen()

// Eine Datei zum Archiv hinzufügen
fileToAdd, _ := os. Offen("Datei1.txt")
verschieben fileToAdd. Schließen()
fileInfo, _ := fileToAdd. Statistik()
Kopfzeile, _ := tar. FileInfoHeader (DateiInfo, "")
tarWriter. WriteHeader (Kopfzeile)
_, _ = io. Kopieren (tarWriter, fileToAdd)
fmt. Println("TAR-Archivierungsvorgang abgeschlossen")
}

Das Programm erstellt neue Tar- und Textdateien mit der Erstellen Funktion der os Paket und ein neues tar-Archiv mit dem NeuerWriter, bevor Sie die Datei zum Archiv hinzufügen.

Der Offen Funktion öffnet die Datei, um sie dem Archiv hinzuzufügen. Beachten Sie, dass Sie eine Datei mit dem Namen benötigen Datei1.txt in Ihrem Arbeitsverzeichnis, um dieses Programm erfolgreich auszuführen.

Du kannst den... benutzen Stat Funktion einer Dateiinstanz, um die Metadaten abzurufen, die Sie für den tar-Header benötigen. Übergeben Sie das Ergebnis an FileInfoHeader, dann übergeben Sie dieses Ergebnis an die WriteHeader Funktion zum Einrichten der TAR-Datei. Kopieren Sie abschließend die Datei mit in das Archiv io. Kopieren.

Extrahieren von Dateien aus Tar-Archiven

Du kannst den... benutzen NeuerLeser Funktion, um den Inhalt der tar-Archivdatei zu lesen. Die NewReader-Funktion übernimmt eine io. Leser Schnittstelle, die eine Datei oder ein Speicherpuffer sein kann. Es gibt einen Zeiger auf a zurück Teer. Leser Struktur.

importieren (
"archiv/tar"
"io"
"os"
)

Funkhauptsächlich() {
// Öffne das tar-Archiv
Datei, _ := os. Offen("meinarchiv.tar")
verschieben Datei. Schließen()

// Erstellen Sie einen neuen tar-Reader
tarReader := tar. NewReader (Datei)

// Über die Dateien im Archiv iterieren
für {
Header, err := tarReader. Nächste()

Wenn Fehler == io. EOF {
brechen
}

// Die Datei extrahieren
outFile, _ := os. Erstellen (Kopfzeile. Name)
verschieben outFile. Schließen()
_, _ = io. Kopieren (outFile, tarReader)
}
}

Der unendliche For-Schleife durchläuft die tar-Reader-Instanz und extrahiert die Dateien, indem jede Datei mit kopiert wird io Pakete Kopieren Funktion.

Erstellen und Hinzufügen von Dateien zu Zip-Archiven

Sie können ein neues Zip-Archiv mit dem erstellen NeuerWriter Funktion der Reißverschluss Paket. Die NewWriter-Funktion übernimmt eine Dateiinstanz und gibt einen ZIP-Writer zurück.

importieren (
"archivieren/zip"
"os"
)

Funkhauptsächlich() {
// Erstellen Sie eine neue Datei
Datei, err := os. Erstellen("archiv.zip")

Wenn äh != Null {
Panik(irren)
}

verschieben Datei. Schließen()

// Erstellen Sie einen neuen Zip-Writer
zipWriter := zip. NewWriter (Datei)
verschieben zipWriter. Schließen()
}

Der zipWriter Variable speichert eine neue Schriftsteller Instanz, die NewWriter zurückgibt.

Mit können Sie Dateien zu Ihren ZIP-Archiven hinzufügen Erstellen Funktion der Writer-Instanz. Die Create-Funktion übernimmt den Dateinamen. Sie können auch die verwenden Schreiben Funktion der ZIP-Dateiinstanz zum Schreiben von Daten in Dateien in ZIP-Archiven.

importieren (
"archivieren/zip"
"os"
)

Funkhauptsächlich() {
// Neue Dateien erstellen
Datei, err := os. Erstellen("archiv.zip")
Datei, Fehler = os. Erstellen("Datei1.txt")
Datei, Fehler = os. Erstellen("Datei2.txt")

Wenn äh != Null {
Panik(irren)
}

verschieben Datei. Schließen()

// Erstellen Sie einen neuen Zip-Writer
zipWriter := zip. NewWriter (Datei)
verschieben zipWriter. Schließen()

// Dateien zum Archiv hinzufügen
file1, err := zipWriter. Erstellen("Datei1.txt")

Wenn äh != Null {
Panik(irren)
}

file2, err := zipWriter. Erstellen("Datei2.txt")

Wenn äh != Null {
Panik(irren)
}

// Daten in die Dateien im Archiv schreiben
file1.Write([]Byte("Hallo Welt!"))
file2.Write([]Byte("Auf Wiedersehen Welt!"))
fmt. Println("ZIP-Archivierungsvorgang abgeschlossen")
}

Die Hauptfunktion beginnt mit der Verwendung Erstellen um eine neue ZIP-Datei und zwei Textdateien zu erstellen. Anschließend werden zwei Writer erstellt, um die beiden Textdateien zum Archiv hinzuzufügen. Der Schreiben Funktion jeder Dateiinstanz schreibt Nachrichten in jede der Dateien im Archiv.

Extrahieren von Dateien aus Zip-Archiven

Sie können eine vorhandene ZIP-Datei extrahieren, indem Sie sie mit dem lesen OpenReader Funktion, durchläuft dann ihren Inhalt und kopiert Dateien mit der io Paket.

importieren (
"archivieren/zip"
"fmt"
"io"
"os"
)

Funkhauptsächlich() {
// Archiv öffnen
zipReader, err := zip. OpenReader("archiv.zip")

Wenn äh != Null {
Panik(irren)
}

verschieben zipReader. Schließen()

// Dateien aus dem Archiv extrahieren
für _, Datei := Bereich zipReader. Datei {
gezippte Datei, err := Datei. Offen()

Wenn äh != Null {
Panik(irren)
}

verschieben gezippteDatei. Schließen()

// Erstellen Sie eine neue Datei mit demselben Namen wie die gezippte Datei
extrahierte Datei, err := os. Erstelle Datei. Name)

Wenn äh != Null {
Panik(irren)
}

verschieben extrahierte Datei. Schließen()

// Kopieren Sie die Daten aus der gezippten Datei in die neue Datei
_, err = io. Kopieren (extrahierte Datei, gezippte Datei)

Wenn äh != Null {
Panik(irren)
}

fmt. Druckenf("Extrahiert %s\n", Datei. Name)
}
}

Der OpenReader Funktion liest Zip-Archive. Der OpenReader Die Funktion akzeptiert den Namen der ZIP-Datei als Argument und gibt eine ZIP-Datei-Reader-Instanz zurück. Der für-Bereich Schleife durchläuft den Inhalt der Dateien in der Reader-Instanz. Es erstellt eine neue Datei mit demselben Namen wie die Originaldatei und kopiert den Inhalt der extrahierten Datei mithilfe von in die neue Datei io. Kopieren Funktion.

Entpacken Sie manuell oder programmgesteuert – Sie haben die Wahl

Das programmgesteuerte Entpacken von Dateien ist praktisch, wenn Sie viele Dateien oder Archive entpacken müssen. Möglicherweise integrieren Sie auch Archivfunktionen in Ihre Haupt-App.

In anderen Fällen ist es möglicherweise besser, vorhandene Anwendungen zu verwenden. Sie können integrierte oder Drittanbieter-Apps verwenden, um Archive unter Windows, macOS und Linux zu entpacken.