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