Search |
||
Achieving better compression with DeflaterPosted by mister__m on December 26, 2003 at 10:48 AM PST
I've recently been playing more intensively with CVS - I've always used either IDE support for it or any nice GUI client for CVS available - and found out more about GZIP compression than I knew before. That's my main motivation for this post. It's been quite a while - since JDK 1.1, according to javadocs - Java has been providing support for working with ZLIB compression through its API. The package So, getting straight to code, if you want to compress an object you are writing to a stream:
public void writeCompressed(OutputStream os, Object toWrite) throws IOException {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new GZIPOutputStream(os));
oos.writeObject(toWrite);
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException ioe) {
/*
* The day someone gives me a sensible explanation why this method
* throws an exception (as if there was something I could do about it or
* if I cared!), I will be sooooo grateful :-D
*/
ioe.printStackTrace();
}
}
}
Besides the ugly Indeed, Deflater supports compression levels through a method named The problem is that
public void writeCompressed(OutputStream os, Object toWrite) throws IOException {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new GZIPOutputStream(os) {
{
def.setLevel(Deflater.BEST_COMPRESSION);
}
});
oos.writeObject(toWrite);
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException ioe) {
/*
* The day someone gives me a sensible explanation why this method
* throws an exception (as if there was something I could do about it or
* if I cared!), I will be sooooo grateful :-D
*/
ioe.printStackTrace();
}
}
}
Using If you happen to be using Prevayler and would like to get smaller snapshots, take a look at reusable-components and download the latest version from here. Also, the »
Related Topics >>
J2SE Comments
Comments are listed in date ascending order (oldest first)
|
||
|
|
Excellent post - albeit quite