logo

Java'da dosyaları sıkıştırmak ve açmak

DeflaterOutputStream ve InflaterInputStream sınıfları, dosya içeriğini sıkıştırmak ve açmak için Java'da sağlanır. Bu sınıflar, dosya içeriğini sıkıştırmak için kullanılabilecek faydalı yöntemler sağlar.

DeflaterOutputStream Kullanarak Bir Dosyayı Sıkıştırmak

Bu sınıf, verileri 'deflate' sıkıştırma formatında sıkıştırmak için bir çıkış akışı filtresi uygular. Ayrıca GZIPOutputStream gibi diğer sıkıştırma filtreleri türleri için de temel olarak kullanılır. Önemli Yöntemler:
    geçersiz kapatma(): Kalan sıkıştırılmış verileri çıkış akışına yazar ve temel akışı kapatır. korumalı void deflate():Sonraki sıkıştırılmış veri bloğunu çıkış akışına yazar. geçersiz bitiş(): Temel akışı kapatmadan, sıkıştırılmış verilerin çıkış akışına yazılmasını tamamlar. geçersiz yıkama(): Sıkıştırılmış çıkış akışını temizler. void write(byte[] b int off int len):Sıkıştırılmış çıkış akışına bir bayt dizisi yazar; burada off, verilerin başlangıç ​​uzaklığıdır ve len toplam bayt sayısıdır. geçersiz yazma(int b):Sıkıştırılmış çıkış akışına bir bayt yazar.
Bir dosyayı sıkıştırma adımları(dosya 1)
  • Verileri okumak için 'dosya 1' giriş dosyasını FileInputStream'e alın.
  • 'Dosya 2' çıktı dosyasını alın ve onu FileOutputStream'e atayın. Bu, 'dosya2'ye veri yazmaya yardımcı olacaktır.
  • Verileri sıkıştırmak için FileOutputStream'i DeflaterOutputStream'e atayın.
  • Şimdi FileInputStream'den verileri okuyun ve DeflaterOutputStream'e yazın. Verileri sıkıştıracak ve sıkıştırılmış verileri çıktı dosyasında saklayan FileOutputStream'e gönderecektir.
Java
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.Deflater; import java.util.zip.DeflaterOutputStream; class zip {  public static void main(String[] args) throws IOException {  //Assign the original file : file to  //FileInputStream for reading data  FileInputStream fis=new FileInputStream('file1');  //Assign compressed file:file2 to FileOutputStream  FileOutputStream fos=new FileOutputStream('file2');  //Assign FileOutputStream to DeflaterOutputStream  DeflaterOutputStream dos=new DeflaterOutputStream(fos);  //read data from FileInputStream and write it into DeflaterOutputStream  int data;  while ((data=fis.read())!=-1)  {  dos.write(data);  }  //close the file  fis.close();  dos.close();  } } 

InflaterInputStream kullanarak bir Dosyanın sıkıştırmasını açma

Bu sınıf, 'deflate' sıkıştırma formatındaki verilerin sıkıştırılmasını açmak için bir akış filtresi uygular. Ayrıca GZIPInputStream gibi diğer açma filtreleri için de temel olarak kullanılır. Önemli yöntemler:
    int mevcut(): EOF'ye ulaşıldıktan sonra 0 değerini döndürür, aksi takdirde her zaman 1 değerini döndürür. geçersiz kapatma(): Giriş akışını kapatır ve akışla ilişkili tüm sistem kaynaklarını serbest bırakır. korumalı boşluk doldurma(): Sıkıştırmayı açmak için giriş arabelleğini daha fazla veriyle doldurur. void mark(int readlimit): Giriş akışındaki geçerli konumu işaretler. boolean markSupported(): Giriş akışının işaretleme ve sıfırlama yöntemlerini destekleyip desteklemediğini test eder. int okuma(): Bir bayt sıkıştırılmamış veriyi okur. int read(byte[] b int off int len): Sıkıştırılmış verileri sıkıştırılmış çıkış akışına bir bayt dizisi halinde okur; burada off, verilerin başlangıç ​​uzaklığıdır ve len toplam bayt sayısıdır. geçersiz sıfırlama(): Bu akışı, bu giriş akışında işaretleme yönteminin en son çağrıldığı andaki konuma yeniden konumlandırır.
Bir dosyanın sıkıştırmasını açma adımları
  • 'Dosya2' isimli dosya artık sıkıştırılmış veri içeriyor ve bu dosyadan orijinal sıkıştırılmış veriyi almamız gerekiyor.
  • Sıkıştırılmış 'file2' dosyasını FileInputStream'e atayın. Bu, 'dosya2'den veri okumaya yardımcı olur.
  • 'file3' çıktı dosyasını FileOutputStream'e atayın. Bu, sıkıştırılmamış verileri 'dosya3'e yazmaya yardımcı olacaktır.
  • Şimdi sıkıştırılmamış verileri InflaterInputStream'den okuyun ve FileOutputStream'e yazın. Bu, sıkıştırılmamış verileri 'dosya3'e yazacaktır.
Java
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.InflaterInputStream; //Uncompressing a file using an InflaterInputStream class unzip {  public static void main(String[] args) throws IOException {  //assign Input File : file2 to FileInputStream for reading data  FileInputStream fis=new FileInputStream('file2');  //assign output file: file3 to FileOutputStream for reading the data  FileOutputStream fos=new FileOutputStream('file3');    //assign inflaterInputStream to FileInputStream for uncompressing the data  InflaterInputStream iis=new InflaterInputStream(fis);    //read data from inflaterInputStream and write it into FileOutputStream   int data;  while((data=iis.read())!=-1)  {  fos.write(data);  }    //close the files  fos.close();  iis.close();    } } 
  Test Oluştur