How do I compress a file in GZip format?

In this code example we will learn how to compress a file using the gzip compression. By its nature, gzip can only compress a single file, you can not use it for compressing a directory and all the files in that directory.

Classes that you will be using to compress a file in gzip format includes the GZipOutputStream, FileInputStream and FileOutputStream classes. The steps for compressing a file described in the comments of the code snippet below.



public class GZipCompressExample {
    public static void main(String[] args) {
        // GZip input and output file.
        String sourceFile = "/Users/wsaryada/Temp/Data/pom.xml";
        String targetFile = "/Users/wsaryada/Temp/Data/pom.gz";

        try {
            // Create a file output stream the write the gzip result into
            // a specified file name.
            FileOutputStream fos = new FileOutputStream(targetFile);

            // Create a gzip output stream object with file output stream
            // as the argument.
            GZIPOutputStream gzos = new GZIPOutputStream(fos);

            // Define buffer and temporary variable for iterating the file
            // input stream.
            byte[] buffer = new byte[1024];
            int length;

            // Create a file input stream of the file that is going to be
            // compressed.
            FileInputStream fis = new FileInputStream(sourceFile);

            // Read all the content of the file input stream and write it
            // to the gzip output stream object.
            while ((length = > 0) {
                gzos.write(buffer, 0, length);

            // Finish file compressing and close all streams.
        } catch (IOException e) {

To decompres gzip file see the following example How do I decompress a GZip file in Java?.

Wayan Saryada

A programmer, runner, recreational diver, currently living in the island of Bali, Indonesia. Mostly programming in Java, creating web based application with Spring Framework, JPA, etc. If you need help on Java programming you can hire me on Fiverr.

Leave a Reply