Aşağıda sıkıştırma ile ilgili notlarım var.
Huffman Coding
Huffman Kodlaması olasılık yöntemini kullanarak her byte'a daha kısa bitler verir. Görülme olasılığı daha fazla olan byte'lar daha kısa değerler alırlar. Böylece sıkıştırma gerçekleşir.
C#
ZipFile
OpenRead - Dosyayı dolaşabilmeyi sağlar
Örnek:
Java ile gelen sınıflar java.util.zip paketinde bulunuyor. Bu sınıflar ile .gz uzantılı dosyalar yazılıp okunabilir.
GZIPInputStream - gz şeklinde sıkıştırılmış dosyayı açar
tar.gz şeklindeki bir dosyayı açma örneği:
GZIPOutputStream
GZIPOutputStream ile byte'ları sıkıştırma imkanı var. GZIPOutputStream sınıfı sadece sıkıştırmak için kullanılır. Eğer birden çok dosya sıkıştırılmak istenirse tar dosya arşivlemesi ile beraber kullanmak gerekir.
Apache Common
TarArchiveInputStream
Bu sınıf ile tar dosyasını dolaşma ve dosyanın tamamını açma imkanı var. Örnek:
Tar dosyası içinde diğer tar dosyalarını dolaşmak için getNextEntry() metodu yerine getNextTarEntry() metodu kullanılabilir.
Huffman Coding
Huffman Kodlaması olasılık yöntemini kullanarak her byte'a daha kısa bitler verir. Görülme olasılığı daha fazla olan byte'lar daha kısa değerler alırlar. Böylece sıkıştırma gerçekleşir.
C#
ZipFile
OpenRead - Dosyayı dolaşabilmeyi sağlar
Örnek:
using System.IO.Compression;Java
ZipArchive zip = ZipFile.OpenRead("FileName.zip");foreach (ZipArchiveEntry entry in zip.Entries)
{
//use entry.FullName;
}
Java ile gelen sınıflar java.util.zip paketinde bulunuyor. Bu sınıflar ile .gz uzantılı dosyalar yazılıp okunabilir.
GZIPInputStream - gz şeklinde sıkıştırılmış dosyayı açar
tar.gz şeklindeki bir dosyayı açma örneği:
FileInputStream instream= new FileInputStream(fileName);Bir başka örnek burada. Okuma örneği.
GZIPInputStream ginstream =new GZIPInputStream(instream);
FileOutputStream outstream = new FileOutputStream(tarFileName);
byte[] buf = new byte[1024];
int len;
while ((len = ginstream.read(buf)) > 0)
{
outstream.write(buf, 0, len);
}
ginstream.close();
outstream.close();
GZIPOutputStream
GZIPOutputStream ile byte'ları sıkıştırma imkanı var. GZIPOutputStream sınıfı sadece sıkıştırmak için kullanılır. Eğer birden çok dosya sıkıştırılmak istenirse tar dosya arşivlemesi ile beraber kullanmak gerekir.
ByteArrayOutputStream os = new ByteArrayOutputStream();Örnekte sıkıştırma gösteriliyor.
GZIPOutputStream gos = new GZIPOutputStream(os);
gos.write("sıkıştırılacak içerik");
gos.close();
byte[] compressed = os.toByteArray();
Apache Common
TarArchiveInputStream
Bu sınıf ile tar dosyasını dolaşma ve dosyanın tamamını açma imkanı var. Örnek:
TarArchiveInputStream inputStream = new TarArchiveInputStream(new FileInputStream(tarPath));Bir başka örnek burada.
TarArchiveEntry entry;
while (null != (entry = inputStream.getNextEntry())) {
if (entry.isDirectory()) {
File directory = new File("." + entry.getName());
directory.mkdir();
continue;
}
FileOutputStream outputStream = new FileOutputStream("." + entry.getName());
IOUtils.copy(inputStream,outputStream);
outputStream.close();
}
inputStream.close();
Tar dosyası içinde diğer tar dosyalarını dolaşmak için getNextEntry() metodu yerine getNextTarEntry() metodu kullanılabilir.
Hiç yorum yok:
Yorum Gönder