Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Algorytmy Gzip i Zlib są powszechnie używane do kompresji i dekompresji plików. Gzip jest używany głównie do kompresji pojedynczych plików, podczas gdy Zlib kompresuje głównie strumienie danych. Algorytmy używają algorytmu kompresji Deflate do kompresji, chociaż Gzip zapewnia dodatkowe funkcje, w tym sprawdzanie błędów i metadane plików.

Gzip zapewnia lepsze współczynniki kompresji niż Zlib. Jednak Gzip wymaga większej mocy obliczeniowej do kompresji i dekompresji danych. W większości przypadków powinieneś używać Gzip do kompresji plików i Zlib do kompresji strumieni danych.

Go zapewnia funkcjonalność kompresji danych, w tym plików za pośrednictwem formatu Kompresja pakiet.

Pakiet kompresji

The Kompresja pakiet obsługuje kompresję danych przez skompresuj/gzip I skompresuj/zlib pakiety, wśród innych funkcjonalności.

The gzip Pakiet obsługuje kompresję i dekompresję danych w formacie pliku gzip, w tym operacje odczytu i zapisu, jak określono w

instagram viewer
RFC 1952. Podczas zlib pakiet pomaga w kompresji i dekompresji danych w formacie zlib.

Możesz importować gzip I zlib od Kompresja pakiet za pomocą import słowo kluczowe.

import (
„kompresuj/gzip”// importujemy gzip

"kompresuj/zlib"// import zlib
)

Kompresowanie i dekompresowanie plików za pomocą Gzip

Gzip to format pliku i aplikacja do kompresji i dekompresji plików. Gzip używa algorytmu łańcuchowego Lempel-Ziv-Markov (LZ77) do kompresji danych, a algorytm ten jest często używany do kompresji plików tekstowych, takich jak pliki HTML, CSS lub JavaScript.

Proces kompresji plików z rozszerzeniem gzip Pakiet jest prosty i intuicyjny. Musisz otworzyć plik, utworzyć plik spakowany gzipem, utworzyć program piszący gzip i skopiować oryginał zawartość pliku do programu zapisującego gzip przed operacją flush, która zapewnia, że ​​proces zapisu jest kompletny.

Uruchom to polecenie basha w terminalu katalogu roboczego w systemach Unix, aby utworzyć przykładowy plik tekstowy, a następnie wstawić tekst do pliku.

// tworzy plik tekstowy.
dotknij przykład.txt

// przesyła łańcuch znaków do pliku
echo 'Witaj, świecie!' > przykład.txt}

Po utworzeniu pliku i wstawieniu tekstu można zaimportować plik gzip, ja, I os pakiety do operacji kompresji.

Oto jak możesz użyć skompresuj/gzip package do kompresji pliku tekstowego.

import (
„kompresuj/gzip”
"io"
„os”
)

funkcjagłówny() {
// Otwórz oryginalny plik
oryginalny plik, błąd:= os. Otwarty(„przykład.txt”)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać oryginalny plik. Zamknąć()

// Utwórz nowy plik spakowany gzipem
gzippedFile, błąd:= os. Tworzyć(„przykład.txt.gz”)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać gzipowany Plik. Zamknąć()

// Utwórz nowy program piszący gzip
gzipWriter := gzip. NewWriter (plik gzipowany)
odraczać gzipWriter. Zamknąć()

// Skopiuj zawartość oryginalnego pliku do programu piszącego gzip
_, błąd = io. Kopiuj (gzipWriter, plik oryginalny)
Jeśli błąd!= zero {
panika(błądzić)
}

// Opróżnij moduł zapisujący gzip, aby upewnić się, że wszystkie dane zostały zapisane
gzipWriter. Spłukać()
}

The otwarty funkcja os package otwiera plik tekstowy, a plik Zamknąć funkcja zamyka plik za pomocą a odraczać oświadczenie. The Tworzyć funkcja tworzy plik spakowany gzipem, a plik NewWriter funkcja gzip package zapisuje zawartość pliku tekstowego do pliku gzip przy użyciu rozszerzenia Kopiuj funkcja ja pakiet.

The Spłukać metoda tzw gzipWriter instance opróżnia moduł zapisujący gzip, gdy wszystkie dane w skompresowanym pliku będą dostępne.

Możesz odzyskać oryginalny plik z pliku spakowanego gzipem poprzez proces dekompresji. Proces dekompresji pliku jest podobny; otworzysz plik i utworzysz czytnik plików gzip, a następnie utworzysz nowy plik do przechowywania nieskompresowanych danych przed skopiowaniem zawartości do nowego pliku.

import (
„kompresuj/gzip”
"io"
„os”
)

funkcjagłówny() {
// Otwórz plik spakowany gzipem
gzippedFile, błąd:= os. Otwarty(„przykład.txt.gz”)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać gzipowany Plik. Zamknąć()

// Utwórz nowy czytnik gzip
gzipReader, błąd:= gzip. NewReader (plik gzipowany)
odraczać Czytnik gzip. Zamknąć()

// Utwórz nowy plik do przechowywania nieskompresowanych danych
nieskompresowany plik, błąd:= os. Tworzyć(„przykład.txt”)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać nieskompresowany plik. Zamknąć()

// Skopiuj zawartość czytnika gzip do nowego pliku
_, błąd = io. Kopiuj (nieskompresowany plik, gzipReader)
Jeśli błąd!= zero {
panika(błądzić)
}
}

The otwarty funkcja os package otwiera plik spakowany gzipem, a plik NowyCzytnik funkcja gzip package czyta spakowany plik. The Tworzyć funkcja os package tworzy nowy plik tekstowy. The Kopiuj funkcja kopiuje zawartość pliku Czytnik gzip do nieskompresowany plik.

Kompresja i dekompresja danych za pomocą Zlib

Zlib to biblioteka do kompresji i dekompresji danych; biblioteka wykorzystuje również algorytm LZ77. Zlib jest napisany w C i jest szeroko stosowany jako podstawa dla innych bibliotek kompresji i oprogramowania. w odróżnieniu gzip, zlib jest biblioteką i zlib nie zawiera A format pliku. Jednak często jest używany do kompresji danych przechowywanych w formatach kontenerów, takich jak PNG lub HTTP.

Proces kompresji za pomocą zlib jest taki sam jak w przypadku gzip. Utworzysz plik zlib, skonfigurujesz program piszący, otworzysz oryginalny plik i skopiujesz zawartość do skompresowanego pliku.

import (
"kompresuj/zlib"
"io"
„os”
)

funkcjagłówny() {
// Utwórz nowy plik „example.zlib”
plik, błąd := os. Tworzyć(„przykład.zlib”)
// Jeśli wystąpi błąd, panikuj i zatrzymaj program
Jeśli błąd!= zero {
panika(błądzić)
}
// Upewnij się, że plik zostanie zamknięty po powrocie funkcji
odraczać plik. Zamknąć()

// Utwórz nowy program piszący zlib z najlepszym poziomem kompresji
pisarz, błąd := zlib. NewWriterLevel (plik, zlib. Najlepsza kompresja)
// Jeśli wystąpi błąd, panikuj i zatrzymaj program
Jeśli błąd!= zero {
panika(błądzić)
}
// Upewnij się, że program piszący jest zamknięty po powrocie funkcji
odraczać pisarz. Zamknąć()

// Otwórz plik wejściowy „example.txt”
inputFile, błąd:= os. Otwarty(„przykład.txt”)
// Jeśli wystąpi błąd, panikuj i zatrzymaj program
Jeśli błąd!= zero {
panika(błądzić)
}
// Upewnij się, że plik wejściowy jest zamknięty po powrocie funkcji
odraczać plik wejściowy. Zamknąć()

// Skopiuj zawartość pliku wejściowego do programu piszącego
ja. Kopiuj (zapis, plik wejściowy)
}

The Tworzyć Metoda tworzy plik zlib, a plik Poziom NewWriter funkcja tworzy program piszący dla pliku z określoną opcją (w tym przypadku Najlepsza kompresja opcja). The otwarty metoda tzw os package otwiera plik tekstowy, a plik Kopiuj funkcja ja package kopiuje zawartość pliku tekstowego do pliku zlib w procesie kompresji.

Aby zdekompresować plik zlib, musisz otworzyć skompresowany plik, utworzyć nowy czytnik zlib, a następnie skopiować zawartość czytnika na standardowe wyjście.

import (
"kompresuj/zlib"
"io"
„os”
)

funkcjagłówny() {
// Otwórz skompresowany plik „compressed_file.zlib”
plik, błąd := os. Otwarty("skompresowany_plik.zlib")
// Jeśli wystąpi błąd, panikuj i zatrzymaj program
Jeśli błąd!= zero {
panika(błądzić)
}
// Upewnij się, że plik zostanie zamknięty po powrocie funkcji
odraczać plik. Zamknąć()

// Utwórz nowy czytnik zlib dla skompresowanego pliku
czytnik, błąd := zlib. NewReader (plik)
// Jeśli wystąpi błąd, panikuj i zatrzymaj program
Jeśli błąd!= zero {
panika(błądzić)
}
// Upewnij się, że czytnik jest zamknięty po powrocie funkcji
odraczać czytelnik. Zamknąć()

// Skopiuj zawartość czytnika na standardowe wyjście
ja. kopiować (os. standardowy, czytelnik)
}

Funkcja main otwiera plik zlib z rozszerzeniem os paczka otwarty funkcja i NowyCzytnik funkcja zlib package wczytuje plik zlib do instancji czytnika. The Kopiuj metoda tzw ja package kopiuje zawartość z czytnika na standardowe wyjście (w tym przypadku konsolę).

Pisanie kodu do kompresji plików jest przydatne do automatyzacji zadań i kompresji kilku plików. Jeśli potrzebujesz skompresować tylko kilka plików, możesz skorzystać z aplikacji takich jak WinRar, WinZip, Express Zip i Bandizip.