Die Gzip- und Zlib-Algorithmen werden allgemein zum Komprimieren und Dekomprimieren von Dateien verwendet. Gzip wird hauptsächlich zum Komprimieren einzelner Dateien verwendet, während Zlib hauptsächlich Datenströme komprimiert. Die Algorithmen verwenden den Deflate-Komprimierungsalgorithmus für die Komprimierung, obwohl Gzip zusätzliche Funktionen wie Fehlerprüfung und Dateimetadaten bietet.
Gzip bietet bessere Komprimierungsverhältnisse als Zlib. Gzip erfordert jedoch mehr Rechenleistung zum Komprimieren und Dekomprimieren von Daten. In den meisten Fällen sollten Sie Gzip zum Komprimieren von Dateien und Zlib zum Komprimieren von Datenströmen verwenden.
Go bietet die Funktionalität zum Komprimieren von Daten, einschließlich Dateien durch die Kompresse Paket.
Das Compress-Paket
Der Kompresse Paket unterstützt das Komprimieren von Daten durch die
komprimieren/gzip Und komprimieren/zlib Pakete, neben anderen Funktionalitäten.Der gzip -Paket unterstützt das Komprimieren und Dekomprimieren der Daten im gzip-Dateiformat, einschließlich Lese- und Schreibvorgängen, wie in angegeben RFC 1952. Während zlib Paket hilft beim Komprimieren und Dekomprimieren von Daten im zlib-Format.
Sie können importieren gzip Und zlib von dem Kompresse Paket mit der importieren Stichwort.
importieren (
"komprimieren/gzip"// gzip importieren
"komprimieren/zlib"// zlib importieren
)
Komprimieren und Dekomprimieren von Dateien mit Gzip
Gzip ist ein Dateiformat und eine Softwareanwendung zur Dateikomprimierung und -dekomprimierung. Gzip verwendet den Lempel-Ziv-Markov-Kettenalgorithmus (LZ77) zum Komprimieren von Daten, und der Algorithmus wird häufig zum Komprimieren von Textdateien wie HTML-, CSS- oder JavaScript-Dateien verwendet.
Der Vorgang des Komprimierens von Dateien mit dem gzip Paket ist einfach und intuitiv. Sie müssen die Datei öffnen, eine gzip-Datei erstellen, einen gzip-Writer erstellen und das Original kopieren den Inhalt der Datei an den gzip-Writer vor dem Flush-Vorgang, der den Schreibvorgang sicherstellt vollständig.
Führen Sie dies aus bash-Befehl im Terminal Ihres Arbeitsverzeichnisses auf Unix-Systemen, um eine Beispieltextdatei zu erstellen und dann Text in die Datei einzufügen.
// Erstellt eine Textdatei.
tippen Sie auf example.txt
// leitet den String an die Datei weiter
Echo 'Hallo, Welt!' > Beispiel.txt}
Nachdem Sie die Datei erstellt und den Text eingefügt haben, können Sie die importieren gzip, io, Und os Pakete für den Komprimierungsvorgang.
So können Sie die verwenden komprimieren/gzip Paket zum Komprimieren einer Textdatei.
importieren (
"komprimieren/gzip"
"io"
"os"
)Funkhauptsächlich() {
// Originaldatei öffnen
Originaldatei, err := os. Offen("beispiel.txt")
Wenn äh != Null {
Panik(irren)
}
verschieben Originaldatei. Schließen()// Erstellen Sie eine neue gzip-Datei
gzippedFile, err := os. Erstellen("beispiel.txt.gz")
Wenn äh != Null {
Panik(irren)
}
verschieben gzippedFile. Schließen()// Erstellen Sie einen neuen gzip-Writer
gzipWriter := gzip. NeuerWriter (gzippedFile)
verschieben gzipWriter. Schließen()// Kopieren Sie den Inhalt der Originaldatei in den gzip-Writer
_, err = io. Kopieren (gzipWriter, Originaldatei)
Wenn äh != Null {
Panik(irren)
}
// Leeren Sie den gzip-Writer, um sicherzustellen, dass alle Daten geschrieben werden
gzipWriter. Spülen()
}
Der Offen Funktion der os Paket öffnet die Textdatei und die Schließen Funktion schließt die Datei mit a verschieben Stellungnahme. Der Erstellen Funktion erstellt eine gzip-Datei und die NeuerWriter Funktion der gzip Das Paket schreibt den Inhalt der Textdatei in die gzip-Datei mit dem Kopieren Funktion der io Paket.
Der Spülen Methode der gzipWriter -Instanz leert den gzip-Writer, sobald alle Daten in der gezippten Datei verfügbar sind.
Sie können die Originaldatei aus einer gzip-Datei durch einen Dekomprimierungsprozess abrufen. Der Vorgang zum Dekomprimieren einer Datei ist ähnlich; Sie öffnen die Datei und erstellen einen gzip-Dateireader. Erstellen Sie dann eine neue Datei, um die unkomprimierten Daten zu speichern, bevor Sie den Inhalt in die neue Datei kopieren.
importieren (
"komprimieren/gzip"
"io"
"os"
)Funkhauptsächlich() {
// gzip-Datei öffnen
gzippedFile, err := os. Offen("beispiel.txt.gz")
Wenn äh != Null {
Panik(irren)
}
verschieben gzippedFile. Schließen()// Erstellen Sie einen neuen gzip-Reader
gzipReader, err := gzip. NewReader (gzippedFile)
verschieben gzipReader. Schließen()// Erstellen Sie eine neue Datei für die unkomprimierten Daten
unkomprimierte Datei, err := os. Erstellen("beispiel.txt")
Wenn äh != Null {
Panik(irren)
}
verschieben unkomprimierte Datei. Schließen()
// Kopieren Sie den Inhalt des gzip-Readers in die neue Datei
_, err = io. Kopieren (unkomprimierte Datei, gzipReader)
Wenn äh != Null {
Panik(irren)
}
}
Der Offen Funktion der os Paket öffnet die gzip-Datei und die NeuerLeser Funktion der gzip Paket liest die gezippte Datei. Der Erstellen Funktion der os Paket erstellt eine neue Textdatei. Der Kopieren Funktion kopiert den Inhalt der gzipReader zum unkomprimierte Datei.
Komprimieren und Dekomprimieren von Daten mit Zlib
Zlib ist eine Bibliothek zur Datenkomprimierung und -dekomprimierung; Die Bibliothek verwendet auch den LZ77-Algorithmus. Zlib ist in C geschrieben und wird häufig als Grundlage für andere Komprimierungsbibliotheken und Software verwendet. nicht wie gzip, zlib ist eine Bibliothek, und zlib beinhaltet nicht a Datei Format. Es wird jedoch häufig verwendet, um Daten zu komprimieren, die in Containerformaten wie PNG oder HTTP gespeichert sind.
Der Komprimierungsprozess mit zlib ist derselbe wie bei gzip. Sie erstellen eine zlib-Datei, konfigurieren einen Writer, öffnen die Originaldatei und kopieren den Inhalt in die komprimierte Datei.
importieren (
"komprimieren/zlib"
"io"
"os"
)Funkhauptsächlich() {
// Erstellen Sie eine neue Datei "example.zlib"
Datei, err := os. Erstellen("beispiel.zlib")
// Wenn ein Fehler auftritt, Panik auslösen und das Programm stoppen
Wenn äh != Null {
Panik(irren)
}
// Stellen Sie sicher, dass die Datei geschlossen wird, nachdem die Funktion zurückkehrt
verschieben Datei. Schließen()// Erstellen Sie einen neuen Zlib-Writer mit der besten Komprimierungsstufe
Schriftsteller, äh := zlib. NewWriterLevel (Datei, zlib. Beste Komprimierung)
// Wenn ein Fehler auftritt, Panik auslösen und das Programm stoppen
Wenn äh != Null {
Panik(irren)
}
// Stellen Sie sicher, dass der Writer geschlossen wird, nachdem die Funktion zurückkehrt
verschieben Schriftsteller. Schließen()// Öffnen Sie die Eingabedatei "example.txt"
Eingabedatei, err := os. Offen("beispiel.txt")
// Wenn ein Fehler auftritt, Panik auslösen und das Programm stoppen
Wenn äh != Null {
Panik(irren)
}
// Stellen Sie sicher, dass die Eingabedatei geschlossen wird, nachdem die Funktion zurückkehrt
verschieben Eingabedatei. Schließen()
// Den Inhalt der Eingabedatei in den Writer kopieren
io. Kopieren (Writer, Eingabedatei)
}
Der Erstellen -Methode erstellt die zlib-Datei und die NewWriterLevel -Funktion erstellt einen Writer für die Datei mit der angegebenen Option (in diesem Fall die Beste Kompression Möglichkeit). Der Offen Methode der os Paket öffnet die Textdatei und die Kopieren Funktion der io Paket kopiert den Inhalt der Textdatei während des Komprimierungsprozesses in die zlib-Datei.
Um die zlib-Datei zu dekomprimieren, müssen Sie die komprimierte Datei öffnen, einen neuen zlib-Reader erstellen und schließlich den Inhalt des Readers in die Standardausgabe kopieren.
importieren (
"komprimieren/zlib"
"io"
"os"
)Funkhauptsächlich() {
// Öffne die komprimierte Datei "compressed_file.zlib"
Datei, err := os. Offen("komprimierte_datei.zlib")
// Wenn ein Fehler auftritt, Panik auslösen und das Programm stoppen
Wenn äh != Null {
Panik(irren)
}
// Stellen Sie sicher, dass die Datei geschlossen wird, nachdem die Funktion zurückkehrt
verschieben Datei. Schließen()// Erstellen Sie einen neuen zlib-Reader für die komprimierte Datei
Leser, äh := zlib. NewReader (Datei)
// Wenn ein Fehler auftritt, Panik auslösen und das Programm stoppen
Wenn äh != Null {
Panik(irren)
}
// Stellen Sie sicher, dass der Reader geschlossen ist, nachdem die Funktion zurückkehrt
verschieben Leser. Schließen()
// Kopieren Sie den Inhalt des Readers in die Standardausgabe
io. Kopieren (o. Stdout, Leser)
}
Die main-Funktion öffnet die zlib-Datei mit der os Pakete Offen Funktion und die NeuerLeser Funktion der zlib Das Paket liest die zlib-Datei in eine Reader-Instanz. Der Kopieren Methode der io Paket kopiert den Inhalt vom Reader auf die Standardausgabe (in diesem Fall die Konsole).
Das Schreiben von Code für die Dateikomprimierung ist praktisch, um Aufgaben zu automatisieren und mehrere Dateien zu komprimieren. Wenn Sie nur wenige Dateien komprimieren müssen, können Sie auf Anwendungen wie WinRar, WinZip, Express Zip und Bandizip zurückgreifen.