Java da Dosya Sıkıştırma (Zip4J)
Bugün çalıştığım projelerden birinde excele data export yapılması gerekiyordu. Ancak data adedi 120.000 fazla olduğu için hepsini tek dosyaya aktarmaya kalkınca hata meydana geliyordu. Çözüm olarak dataları birden fazla dosyaya aktarmakta buldum. Ancak kullanıcıya bir tane dosya download ettirmem gerekiyordu. Bu sorunu da dosya sıkıştırması yaparak çözebileceğim aklıma geldi. Ve internette Java ile dosya sıkıştırması nasıl yaparım diye biraz araştırdım ve Zip4j projesini buldum.
Java ile dosya ve dizin sıkıştırması yapmak için güzel bir kütüphane, Zip4J.
Bu kütüphaneyi kullanarak örnek bir proje hazırladım.
www.lingala.net/zip4j/ adresinden güncel Zip4j kütüphanesi indirebilirsiniz.
package javazip;
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.model.ZipParameters; import net.lingala.zip4j.util.Zip4jConstants;
/** * * @author Ali */ public class JavaZip {
public static void main(String[] args) { ArrayList files = new ArrayList(); String fileName = ""; File file = null; FileWriter fw = null; BufferedWriter bw = null; try{ for(int i=0;i<5;i++){ fileName = "/temp/deneme" + i + ".txt"; file = new File(fileName); fw = new FileWriter(file.getAbsoluteFile()); bw = new BufferedWriter(fw); for(int k=0;k<100;k++){ bw.write("icerik-" + i + "-" + k + "\n"); } bw.close(); files.add(file); } String zipFileName = "/temp/deneme.zip"; /*** Eğer zipFileName varsa Already exists hatası alınır***/ ZipParameters parameters = new ZipParameters(); parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_ULTRA); ZipFile zipFile = new ZipFile(zipFileName); zipFile.createZipFile(files, parameters); //oluşturulan dosyaları sıkıştırır. /** Bir dizini sıkıştırmak için **/ zipFileName = "/temp.zip"; zipFile = new ZipFile(zipFileName); zipFile.createZipFileFromFolder("/temp", parameters, true, 10485760); }catch(Exception e){ e.printStackTrace(); } } }
örneği indirmek için tıklayınız












