Gzip ve Zlib algoritmaları, dosyaları sıkıştırmak ve açmak için popüler olarak kullanılır. Gzip, öncelikle tek dosyaları sıkıştırmak için kullanılırken Zlib, esas olarak veri akışlarını sıkıştırır. Algoritmalar, sıkıştırma için Söndürme Sıkıştırma Algoritmasını kullanır, ancak Gzip, hata denetimi ve dosya meta verileri gibi ek özellikler sağlar.
Gzip, Zlib'den daha iyi sıkıştırma oranları sağlamıştır. Ancak Gzip, verileri sıkıştırmak ve açmak için daha fazla işlem gücü gerektirir. Çoğu durumda, dosyaları sıkıştırmak için Gzip'i ve veri akışlarını sıkıştırmak için Zlib'i kullanmalısınız.
Go, dosyalar da dahil olmak üzere verileri sıkıştırmak için işlevsellik sağlar. kompres paket.
Sıkıştırma Paketi
bu kompres paket, verilerin sıkıştırılmasını destekler sıkıştır/gzip Ve sıkıştırmak/zlib paketler, diğer işlevlerin yanı sıra.
bu gzip paket, içinde belirtildiği gibi okuma ve yazma işlemleri dahil olmak üzere gzip dosya biçimi verilerinin sıkıştırılmasını ve sıkıştırılmış halden çıkarılmasını destekler. RFC 1952. iken zlib package, zlib biçimindeki verilerin sıkıştırılmasına ve açılmasına yardımcı olur.
içe aktarabilirsiniz gzip Ve zlib dan kompres kullanarak paket içe aktarmak anahtar kelime.
içe aktarmak (
"sıkıştır/gzip"// gzip'i içe aktar
"sıkıştır/zlib"// zlib'i içe aktar
)
Gzip İle Dosyaları Sıkıştırma ve Açma
Gzip, bir dosya formatı ve dosya sıkıştırma ve açma için bir yazılım uygulamasıdır. Gzip, verileri sıkıştırmak için Lempel-Ziv-Markov zincir algoritmasını (LZ77) kullanır ve algoritma genellikle HTML, CSS veya JavaScript dosyaları gibi metin dosyalarını sıkıştırmak için kullanılır.
Dosyaları sıkıştırma işlemi gzip paket basit ve sezgiseldir. Dosyayı açmanız, bir gzip dosyası oluşturmanız, bir gzip yazıcısı oluşturmanız ve orijinali kopyalamanız gerekir. Yazma işleminin yapılmasını sağlayan temizleme işleminden önce dosyanın içeriğini gzip yazıcısına gönderin. tamamlamak.
Bunu çalıştır bash komutu örnek bir metin dosyası oluşturmak ve ardından dosyaya metin eklemek için Unix sistemlerindeki çalışma dizininizin terminalinde.
// bir metin dosyası oluşturur.
example.txt'ye dokunun
// diziyi dosyaya yönlendirir
yankı 'Merhaba dünya!' > örnek.txt}
Dosyayı oluşturduktan ve metni ekledikten sonra, gzip, ben, Ve işletim sistemi sıkıştırma işlemi için paketler.
İşte nasıl kullanabileceğiniz sıkıştır/gzip Bir metin dosyasını sıkıştırmak için paket.
içe aktarmak (
"sıkıştır/gzip"
"yo"
"işletim sistemi"
)işlevana() {
// Orijinal dosyayı aç
orijinalDosya, hata := işletim sistemi. Açık("örnek.txt")
eğer hata!= sıfır {
panik(hata)
}
ertelemek Orijinal dosya. Kapalı()// yeni bir sıkıştırılmış dosya oluşturun
gzippedFile, err := işletim sistemi. Yaratmak("örnek.txt.gz")
eğer hata!= sıfır {
panik(hata)
}
ertelemek gzip dosyası Kapalı()// Yeni bir gzip yazarı oluştur
gzipWriter := gzip. NewWriter (gzip dosyası)
ertelemek gzipYazar. Kapalı()// Orijinal dosyanın içeriğini gzip yazıcısına kopyalayın
_, hata = io. Kopyala (gzipWriter, orijinalDosya)
eğer hata!= sıfır {
panik(hata)
}
// Tüm verilerin yazıldığından emin olmak için gzip yazıcısını temizleyin
gzipYazar. floş()
}
bu Açık işlevi işletim sistemi package metin dosyasını açar ve Kapalı işlevi dosyayı bir ertelemek ifade. bu Yaratmak işlevi bir gzip dosyası oluşturur ve Yeni Yazar işlevi gzip package kullanarak metin dosyasının içeriğini gzip dosyasına yazar. kopyala işlevi ben paket.
bu floş yöntemi gzipYazar örnek, sıkıştırılmış dosyada tüm veriler mevcut olduğunda gzip yazıcısını temizler.
Özgün dosyayı gzip'li bir dosyadan açma işlemiyle alabilirsiniz. Bir dosyanın sıkıştırmasını açma işlemi benzerdir; dosyayı açacak ve bir gzip dosya okuyucusu oluşturacaksınız, ardından içeriği yeni dosyaya kopyalamadan önce sıkıştırılmamış verileri tutmak için yeni bir dosya oluşturacaksınız.
içe aktarmak (
"sıkıştır/gzip"
"yo"
"işletim sistemi"
)işlevana() {
// gzipli dosyayı aç
gzippedFile, err := işletim sistemi. Açık("örnek.txt.gz")
eğer hata!= sıfır {
panik(hata)
}
ertelemek gzip dosyası Kapalı()// Yeni bir gzip okuyucu oluştur
gzipReader, hata := gzip. Yeni Okuyucu (gziplenmişDosya)
ertelemek gzipReader. Kapalı()// Sıkıştırılmamış verileri tutmak için yeni bir dosya oluşturun
sıkıştırılmamışDosya, hata := işletim sistemi. Yaratmak("örnek.txt")
eğer hata!= sıfır {
panik(hata)
}
ertelemek sıkıştırılmamış Dosya Kapalı()
// gzip okuyucunun içeriğini yeni dosyaya kopyalayın
_, hata = io. Kopyala (sıkıştırılmamışDosya, gzipReader)
eğer hata!= sıfır {
panik(hata)
}
}
bu Açık işlevi işletim sistemi package gzipli dosyayı açar ve YeniOkuyucu işlevi gzip paket sıkıştırılmış dosyayı okur. bu Yaratmak işlevi işletim sistemi package yeni bir metin dosyası oluşturur. bu kopyala işlev içeriğini kopyalar gzipOkuyucu için sıkıştırılmamışDosya.
Zlib ile Verileri Sıkıştırma ve Açma
Zlib, veri sıkıştırma ve açma için bir kitaplıktır; kütüphane ayrıca LZ77 algoritmasını kullanır. Zlib, C ile yazılmıştır ve diğer sıkıştırma kitaplıklarının ve yazılımlarının temeli olarak yaygın şekilde kullanılmaktadır. Farklı gzip, zlib bir kütüphanedir ve zlib içermez dosya formatı. Ancak, genellikle PNG veya HTTP gibi kap biçimlerinde saklanan verileri sıkıştırmak için kullanılır.
Zlib ile sıkıştırma işlemi, gzip ile aynıdır. Bir zlib dosyası oluşturacak, bir yazıcı yapılandıracak, orijinal dosyayı açacak ve içeriği sıkıştırılmış dosyaya kopyalayacaksınız.
içe aktarmak (
"sıkıştır/zlib"
"yo"
"işletim sistemi"
)işlevana() {
// Yeni bir "example.zlib" dosyası oluşturun
dosya, hata := işletim sistemi. Yaratmak("örnek.zlib")
// Hata oluşursa paniğe kapılın ve programı durdurun
eğer hata!= sıfır {
panik(hata)
}
// Fonksiyon döndükten sonra dosyanın kapatıldığından emin olun
ertelemek dosya. Kapalı()// En iyi sıkıştırma düzeyine sahip yeni bir zlib yazıcı oluşturun
yazar, hata := zlib. NewWriterLevel (dosya, zlib. En İyi Sıkıştırma)
// Hata oluşursa paniğe kapılın ve programı durdurun
eğer hata!= sıfır {
panik(hata)
}
// İşlev döndükten sonra yazarın kapalı olduğundan emin olun
ertelemek yazar. Kapalı()// "example.txt" giriş dosyasını açın
inputFile, err := işletim sistemi. Açık("örnek.txt")
// Hata oluşursa paniğe kapılın ve programı durdurun
eğer hata!= sıfır {
panik(hata)
}
// İşlev döndükten sonra giriş dosyasının kapatıldığından emin olun
ertelemek giriş dosyası. Kapalı()
// Girdi dosyasının içeriğini yazıcıya kopyalayın
io. Kopyala (yazar, girdiDosyası)
}
bu Yaratmak yöntemi zlib dosyasını oluşturur ve YeniYazarSeviyesi işlevi belirtilen seçeneğe sahip dosya için bir yazar oluşturur (bu durumda, En İyi Sıkıştırma seçenek). bu Açık yöntemi işletim sistemi package metin dosyasını açar ve kopyala işlevi ben package, sıkıştırma işleminde metin dosyasının içeriğini zlib dosyasına kopyalar.
Zlib dosyasını açmak için sıkıştırılmış dosyayı açmanız, yeni bir zlib okuyucu oluşturmanız ve son olarak okuyucunun içeriğini standart çıktıya kopyalamanız gerekir.
içe aktarmak (
"sıkıştır/zlib"
"yo"
"işletim sistemi"
)işlevana() {
// "compressed_file.zlib" sıkıştırılmış dosyasını açın
dosya, hata := işletim sistemi. Açık("compressed_file.zlib")
// Hata oluşursa paniğe kapılın ve programı durdurun
eğer hata!= sıfır {
panik(hata)
}
// Fonksiyon döndükten sonra dosyanın kapatıldığından emin olun
ertelemek dosya. Kapalı()// Sıkıştırılmış dosya için yeni bir zlib okuyucu oluşturun
okuyucu, hata := zlib. Yeni Okuyucu (dosya)
// Hata oluşursa paniğe kapılın ve programı durdurun
eğer hata!= sıfır {
panik(hata)
}
// İşlev döndükten sonra okuyucunun kapalı olduğundan emin olun
ertelemek okuyucu. Kapalı()
// Okuyucunun içeriğini standart çıktıya kopyalayın
io. Kopyala (os. Stdout, okuyucu)
}
Ana işlev, zlib dosyasını şu şekilde açar: işletim sistemi paketin Açık işlevi ve YeniOkuyucu işlevi zlib package, zlib dosyasını bir okuyucu örneğine okur. bu kopyala yöntemi ben package, içeriği okuyucudan standart çıktıya (bu durumda konsola) kopyalar.
Dosya sıkıştırma için kod yazmak, görevleri otomatikleştirmek ve birkaç dosyayı sıkıştırmak için kullanışlıdır. Yalnızca birkaç dosyayı sıkıştırmanız gerekiyorsa WinRar, WinZip, Express Zip ve Bandizip gibi uygulamaları kullanabilirsiniz.