using latest enhanced (un/)gzip methods from loklak for yacy

pull/9/merge
Michael Peter Christen 10 years ago
parent 3e6657288d
commit 1bced1ae60

@ -84,28 +84,36 @@ public class gzip {
} }
public static byte[] gzipString(final String in) { public static byte[] gzipString(final String in) {
return gzip(UTF8.getBytes(in));
}
public static String gunzipString(final byte[] in) {
return UTF8.String(gunzip(in));
}
public static byte[] gzip(byte[] b) {
try { try {
final InputStream fin = new ByteArrayInputStream(in.getBytes("UTF8")); ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length);
final int buffersize = Math.min(1024, in.length()); GZIPOutputStream out = new GZIPOutputStream(baos, Math.min(65536, b.length)){{def.setLevel(Deflater.BEST_COMPRESSION);}};
final ByteArrayOutputStream baos = new ByteArrayOutputStream(buffersize); out.write(b, 0, b.length);
final OutputStream fout = new GZIPOutputStream(baos, Math.max(buffersize, 65536)){{def.setLevel(Deflater.BEST_COMPRESSION);}}; out.finish();
copy(fout, fin, 1024); out.close();
fin.close();
fout.close();
return baos.toByteArray(); return baos.toByteArray();
} catch (final IOException e) { } catch (IOException e) {}
logger.warn("ERROR: IO trouble ",e);
return null; return null;
} }
}
public static String gunzipString(final byte[] in) throws IOException { public static byte[] gunzip(byte[] b) {
final InputStream fin = new GZIPInputStream(new ByteArrayInputStream(in)); byte[] buffer = new byte[Math.min(2^20, b.length)];
final ByteArrayOutputStream fout = new ByteArrayOutputStream(in.length / 3); try {
copy(fout, fin, 1024); ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length * 2);
fin.close(); GZIPInputStream in = new GZIPInputStream(new ByteArrayInputStream(b), Math.min(65536, b.length));
fout.close(); int l; while ((l = in.read(buffer)) > 0) baos.write(buffer, 0, l);
return UTF8.String(fout.toByteArray()); in.close();
baos.close();
return baos.toByteArray();
} catch (IOException e) {}
return null;
} }
private static void copy(final OutputStream out, final InputStream in, final int bufferSize) throws IOException { private static void copy(final OutputStream out, final InputStream in, final int bufferSize) throws IOException {

Loading…
Cancel
Save