Here you can find the source of compress(InputStream is, OutputStream os)
public static void compress(InputStream is, OutputStream os)
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.GZIPOutputStream; public class Main { public static final int BUFFER = 1024; public static final String EXT = ".gz"; public static byte[] compress(byte[] data) { ByteArrayInputStream bais = new ByteArrayInputStream(data); ByteArrayOutputStream baos = new ByteArrayOutputStream(); /*from ww w.j av a2 s . c om*/ compress(bais, baos); byte[] output = baos.toByteArray(); try { baos.flush(); } catch (IOException e) { System.out.println(e.getMessage()); } finally { if (baos != null) { try { baos.close(); } catch (IOException e) { } } if (bais != null) { try { bais.close(); } catch (IOException e) { } } } return output; } public static void compress(File file) throws Exception { compress(file, true); } public static void compress(File file, boolean delete) throws Exception { FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(file.getPath() + EXT); compress(fis, fos); fis.close(); fos.flush(); fos.close(); if (delete) { file.delete(); } } public static void compress(InputStream is, OutputStream os) { GZIPOutputStream gos = null; try { gos = new GZIPOutputStream(os); int count; byte data[] = new byte[BUFFER]; while ((count = is.read(data, 0, BUFFER)) != -1) { gos.write(data, 0, count); } gos.finish(); gos.flush(); } catch (IOException e) { System.out.println(e.getMessage()); } finally { try { gos.close(); } catch (IOException e) { } } } public static void compress(String path) throws Exception { compress(path, true); } public static void compress(String path, boolean delete) throws Exception { File file = new File(path); compress(file, delete); } }