In last section, you learn about how to write or serialized an object into a file. In this example , you can do more than just serialized it , you also can compress the serialized object to reduce the file size.

The idea is very simple, just using the “GZIPOutputStream” for the data compression.

FileOutputStream fos = new FileOutputStream("c:\\address.gz");
GZIPOutputStream gz = new GZIPOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(gz);

GZIP Example

In this example, you will create an “Address” object , compress it and write it into a file “c:\\address.gz“.

P.S Address object can refer to this article.

Address.java

package com.favtuts.io.object;

import java.io.Serializable;

public class Address implements Serializable {

    //private static final long serialVersionUID = 1L;
    private static final long serialVersionUID = 99L;

    String street;
    String country;

    public Address() {        
    }

    public Address(String street, String country) {
        this.street = street;
        this.country = country;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return "Address{" +
                "street='" + street + '\'' +
                ", country='" + country + '\'' +
                '}';
    }
}

Serializer.java

package com.favtuts.io.howto.compress;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.zip.GZIPOutputStream;

import com.favtuts.io.object.Address;

public class Serializer implements Serializable {

    public static void main(String[] args) {
        Serializer serializer = new Serializer();
        serializer.serializeAddress("Wall street", "United State");
    }
    
    public void serializeAddress(String street, String country) {

        Address address = new Address();
        address.setStreet(street);
        address.setCountry(country);

        try {
            FileOutputStream fos = new FileOutputStream("/home/tvt/workspace/favtuts/address.gz");
            GZIPOutputStream gz = new GZIPOutputStream(fos);

            ObjectOutputStream oos = new ObjectOutputStream(gz);

            oos.writeObject(address);
            oos.close();

            System.out.println("Done");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-io/howto/compress

Leave a Reply

Your email address will not be published. Required fields are marked *