Java tutorial
//package com.java2s; 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.GZIPInputStream; public class Main { public static File ungzip(File gzip, File toDir) throws IOException { toDir.mkdirs(); File out = new File(toDir, gzip.getName()); GZIPInputStream gin = null; FileOutputStream fout = null; try { FileInputStream fin = new FileInputStream(gzip); gin = new GZIPInputStream(fin); fout = new FileOutputStream(out); copy(gin, fout); gin.close(); fout.close(); } finally { closeQuietly(gin); closeQuietly(fout); } return out; } private static int copy(InputStream input, OutputStream output) throws IOException { long count = copyStream(input, output); if (count > Integer.MAX_VALUE) { return -1; } return (int) count; } private static void closeQuietly(OutputStream output) { try { if (output != null) { output.close(); } } catch (IOException ioe) { // ignore } } private static void closeQuietly(InputStream input) { try { if (input != null) { input.close(); } } catch (IOException ioe) { // ignore } } private static long copyStream(InputStream input, OutputStream output) throws IOException { byte[] buffer = new byte[1024]; long count = 0; int n = 0; while (-1 != (n = input.read(buffer))) { output.write(buffer, 0, n); count += n; } return count; } }