//----------------------------------------------------------------------------//
// //
// 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 Zip
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;
}
}