Java tutorial
//----------------------------------------------------------------------------// // // // Z i p // // // // Copyright (C) Herve Bitteur 2000-2009. All rights reserved. // // This software is released under the GNU General Public License. // // Please contact users@audiveris.dev.java.net to report bugs & suggestions. // //----------------------------------------------------------------------------// // import java.io.*; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; /** * Class <code>Zip</code> is a convenient utility that provides both writing and * reading from a file which is transparently compressed in Zip. * * @author Hervé Bitteur * @version $Id: Zip.java,v 1.6 2009/03/03 19:45:51 hbitteur Exp $ */ public class Zip { //~ Methods ---------------------------------------------------------------- //--------------------// // createInputStream // //-------------------// /** * Create a InputStream on a given file, by looking for a zip archive whose * path is the file path with ".zip" appended, and by reading the first * entry in this zip file. * * @param file the file (with no zip extension) * * @return a InputStream on the zip entry */ public static InputStream createInputStream(File file) { try { String path = file.getCanonicalPath(); //ZipFile zf = new ZipFile(path + ".zip"); ZipFile zf = new ZipFile(path); for (Enumeration entries = zf.entries(); entries.hasMoreElements();) { ZipEntry entry = (ZipEntry) entries.nextElement(); return zf.getInputStream(entry); } } catch (FileNotFoundException ex) { System.err.println(ex.toString()); System.err.println(file + " not found"); } catch (IOException ex) { System.err.println(ex.toString()); } return null; } //--------------------// // createOutputStream // //-------------------// /** * Create a OutputStream on a given file, transparently compressing the data * to a Zip file whose name is the provided file path, with a ".zip" * extension added. * * @param file the file (with no zip extension) * * @return a OutputStream on the zip entry */ public static OutputStream createOutputStream(File file) { try { String path = file.getCanonicalPath(); FileOutputStream fos = new FileOutputStream(path + ".zip"); ZipOutputStream zos = new ZipOutputStream(fos); ZipEntry ze = new ZipEntry(file.getName()); zos.putNextEntry(ze); return zos; } catch (FileNotFoundException ex) { System.err.println(ex.toString()); System.err.println(file + " not found"); } catch (Exception ex) { System.err.println(ex.toString()); } return null; } //--------------// // createReader // //--------------// /** * Create a Reader on a given file, by looking for a zip archive whose path * is the file path with ".zip" appended, and by reading the first entry in * this zip file. * * @param file the file (with no zip extension) * * @return a reader on the zip entry */ public static Reader createReader(File file) { try { String path = file.getCanonicalPath(); ZipFile zf = new ZipFile(path + ".zip"); for (Enumeration entries = zf.entries(); entries.hasMoreElements();) { ZipEntry entry = (ZipEntry) entries.nextElement(); InputStream is = zf.getInputStream(entry); return new InputStreamReader(is); } } catch (FileNotFoundException ex) { System.err.println(ex.toString()); System.err.println(file + " not found"); } catch (IOException ex) { System.err.println(ex.toString()); } return null; } //--------------// // createWriter // //--------------// /** * Create a Writer on a given file, transparently compressing the data to a * Zip file whose name is the provided file path, with a ".zip" extension * added. * * @param file the file (with no zip extension) * * @return a writer on the zip entry */ public static Writer createWriter(File file) { try { String path = file.getCanonicalPath(); FileOutputStream fos = new FileOutputStream(path + ".zip"); ZipOutputStream zos = new ZipOutputStream(fos); ZipEntry ze = new ZipEntry(file.getName()); zos.putNextEntry(ze); return new OutputStreamWriter(zos); } catch (FileNotFoundException ex) { System.err.println(ex.toString()); System.err.println(file + " not found"); } catch (Exception ex) { System.err.println(ex.toString()); } return null; } }