// ----------------------------------------------------------------------------- // UncompressFileGZIP.java // ----------------------------------------------------------------------------- /* * ============================================================================= * Copyright (c) 1998-2011 Jeffrey M. Hunter. All rights reserved. * * All source code and material located at the Internet address of * http://www.idevelopment.info is the copyright of Jeffrey M. Hunter and * is protected under copyright laws of the United States. This source code may * not be hosted on any other site without my express, prior, written * permission. Application to host any of the material elsewhere can be made by * contacting me at jhunter@idevelopment.info. * * I have made every effort and taken great care in making sure that the source * code and other content included on my web site is technically accurate, but I * disclaim any and all responsibility for any loss, damage or destruction of * data or any other property which may arise from relying on it. I will in no * case be liable for any monetary damages arising from such loss, damage or * destruction. * * As with any code, ensure to test this code in a development environment * before attempting to run it in production. * ============================================================================= */ import java.util.zip.GZIPInputStream; import java.io.FileOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /** * ----------------------------------------------------------------------------- * Used to provide an example of uncompressing a file in the GZIP Format. * * @version 1.0 * @author Jeffrey M. Hunter (jhunter@idevelopment.info) * @author http://www.idevelopment.info * ----------------------------------------------------------------------------- */ public class UncompressFileGZIP { /** * Uncompress the incoming file. * @param inFileName Name of the file to be uncompressed */ private static void doUncompressFile(String inFileName) { try { if (!getExtension(inFileName).equalsIgnoreCase("gz")) { System.err.println("File name must have extension of \".gz\""); System.exit(1); } System.out.println("Opening the compressed file."); GZIPInputStream in = null; try { in = new GZIPInputStream(new FileInputStream(inFileName)); } catch(FileNotFoundException e) { System.err.println("File not found. " + inFileName); System.exit(1); } System.out.println("Open the output file."); String outFileName = getFileName(inFileName); FileOutputStream out = null; try { out = new FileOutputStream(outFileName); } catch (FileNotFoundException e) { System.err.println("Could not write to file. " + outFileName); System.exit(1); } System.out.println("Transfering bytes from compressed file to the output file."); byte[] buf = new byte[1024]; int len; while((len = in.read(buf)) > 0) { out.write(buf, 0, len); } System.out.println("Closing the file and stream"); in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); System.exit(1); } } /** * Used to extract and return the extension of a given file. * @param f Incoming file to get the extension of * @return String representing the extension of the incoming * file. */ public static String getExtension(String f) { String ext = ""; int i = f.lastIndexOf('.'); if (i > 0 && i < f.length() - 1) { ext = f.substring(i+1); } return ext; } /** * Used to extract the filename without its extension. * @param f Incoming file to get the filename * @return String representing the filename without its * extension. */ public static String getFileName(String f) { String fname = ""; int i = f.lastIndexOf('.'); if (i > 0 && i < f.length() - 1) { fname = f.substring(0,i); } return fname; } /** * Sole entry point to the class and application. * @param args Array of String arguments. */ public static void main(String[] args) { if (args.length != 1) { System.err.println("Usage: java UncompressFileGZIP gzipfile"); } else { doUncompressFile(args[0]); } } }