FileInputStreamFileOutputStreamGZIPOutputStream

Compress a File in GZIP format in Java

In this tutorial we are going to see how you can compress a File in Java using the GZIP compression method.

So, to perform File compression using GZIP in Java, you have to:

  • Create a FileOutputStream to the destination file, that is the file path to the output compressed file.
  • Create a GZIPOutputStream to the above FileOutputStream.
  • Create a FileInputStream to the file you want to compress
  • Read the bytes from the source file and compress them using GZIPOutputStream.

 
Let’s take a look at the code snippet that follows:

package com.javacodegeeks.java.core;

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

public class CompressFileGzip {

	public static void main(String[] args) {

		
		String source_filepath = "C:\\Users\\nikos7\\Desktop\\files\\test.txt";
		String destinaton_zip_filepath = "C:\\Users\\nikos7\\Desktop\\files\\test.gzip";

		CompressFileGzip gZipFile = new CompressFileGzip();
		gZipFile.gzipFile(source_filepath, destinaton_zip_filepath);
	}

	public void gzipFile(String source_filepath, String destinaton_zip_filepath) {

		byte[] buffer = new byte[1024];

		try {
			
			FileOutputStream fileOutputStream =new FileOutputStream(destinaton_zip_filepath);

			GZIPOutputStream gzipOuputStream = new GZIPOutputStream(fileOutputStream);

			FileInputStream fileInput = new FileInputStream(source_filepath);

			int bytes_read;
			
			while ((bytes_read = fileInput.read(buffer)) > 0) {
				gzipOuputStream.write(buffer, 0, bytes_read);
			}

			fileInput.close();

			gzipOuputStream.finish();
			gzipOuputStream.close();

			System.out.println("The file was compressed successfully!");

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

}

Output:

The file was compressed successfully!

 
This was an example on how to compress files in Java with the GZIP method.

Byron Kiourtzoglou

Byron is a master software engineer working in the IT and Telecom domains. He is an applications developer in a wide variety of applications/services. He is currently acting as the team leader and technical architect for a proprietary service creation and integration platform for both the IT and Telecom industries in addition to a in-house big data real-time analytics solution. He is always fascinated by SOA, middleware services and mobile development. Byron is co-founder and Executive Editor at Java Code Geeks.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to top button