G-ZIP

A

Arne Vajhøj

Chase said:
How do you set the compression level of a G-ZIP output stream (0-9)?

It is a bit complicated, because they have protected the API
for that.

But see at the code below for how to workaround it. It should
also be noted that the default level seems to be 6 and that
it will be fine for most usage.

Arne

================================================

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

public class GZipFun {
public static void gzip(String infnm, String outfnm) throws
IOException {
FileInputStream is = new FileInputStream(infnm);
GZIPOutputStream os = new GZIPOutputStream(new
FileOutputStream(outfnm));
byte[] b = new byte[100000];
int n;
while((n = is.read(b)) > 0) {
os.write(b, 0, n);
}
os.close();
is.close();
}
public static void xgzip(String infnm, String outfnm, int level)
throws IOException {
FileInputStream is = new FileInputStream(infnm);
XGZIPOutputStream os = new XGZIPOutputStream(new
FileOutputStream(outfnm));
os.setLevel(level);
byte[] b = new byte[100000];
int n;
while((n = is.read(b)) > 0) {
os.write(b, 0, n);
}
os.close();
is.close();
}
public static void main(String[] args) throws Exception {
gzip("C:\\z.txt", "C:\\z.txt.gz");
for(int i = 0; i < 10; i++) {
xgzip("C:\\z.txt", "C:\\z.txt.gz" + i, i);
}
}
}

class XGZIPOutputStream extends GZIPOutputStream {
public XGZIPOutputStream(OutputStream out) throws IOException {
super(out);
}
public void setLevel(int level) {
def.setLevel(level);
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,431
Messages
2,571,679
Members
48,796
Latest member
Greg L.

Latest Threads

Top