דוגמה לקוד Java GZIP – דחיסה ופיצוץ קובץ

ברוך הבא לדוגמא של Java GZIP. GZIP היא אחת מהכלים האהובים לדחיסת קבצים במערכות Unix. אנו יכולים לדחוס קובץ יחיד בפורמט GZIP, אך אין אפשרות לדחוס ולארכוב ספרייה באמצעות GZIP כמו בקבצי ZIP.

Java GZIP

הנה דוגמה פשוטה לתוכנית Java GZIP שמציגה איך אנו יכולים לדחוס קובץ לפורמט GZIP ולאחר מכן לפשט את קובץ ה-GZIP כדי ליצור קובץ חדש. GZIPExample.java

package com.journaldev.files;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class GZIPExample {

    public static void main(String[] args) {
        String file = "/Users/pankaj/sitemap.xml";
        String gzipFile = "/Users/pankaj/sitemap.xml.gz";
        String newFile = "/Users/pankaj/new_sitemap.xml";
        
        compressGzipFile(file, gzipFile);
        
        decompressGzipFile(gzipFile, newFile);
               
    }

    private static void decompressGzipFile(String gzipFile, String newFile) {
        try {
            FileInputStream fis = new FileInputStream(gzipFile);
            GZIPInputStream gis = new GZIPInputStream(fis);
            FileOutputStream fos = new FileOutputStream(newFile);
            byte[] buffer = new byte[1024];
            int len;
            while((len = gis.read(buffer)) != -1){
                fos.write(buffer, 0, len);
            }
            // סגירת משאבים
            fos.close();
            gis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }

    private static void compressGzipFile(String file, String gzipFile) {
        try {
            FileInputStream fis = new FileInputStream(file);
            FileOutputStream fos = new FileOutputStream(gzipFile);
            GZIPOutputStream gzipOS = new GZIPOutputStream(fos);
            byte[] buffer = new byte[1024];
            int len;
            while((len=fis.read(buffer)) != -1){
                gzipOS.write(buffer, 0, len);
            }
            // סגירת משאבים
            gzipOS.close();
            fos.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }

}

בעת פישוט של קובץ GZIP, אם הוא לא בפורמט GZIP, יתכן ויתן לזרוק יוצא מן הכלל.

java.util.zip.ZipException: Not in GZIP format
	at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:78)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:90)
	at com.journaldev.files.GZIPExample.decompressGzipFile(GZIPExample.java:25)
	at com.journaldev.files.GZIPExample.main(GZIPExample.java:18)

זו כל הדוגמה של Java GZIP.

Source:
https://www.digitalocean.com/community/tutorials/java-gzip-example-compress-decompress-file