/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2003-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/package org.geotools.graph.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
public class ZipUtil {
public static void zip(String zipFilename, String[] filenames)
throws IOException {
zip(zipFilename, filenames, filenames);
}
public static void zip(
String zipFilename, String[] filenames, String[] archFilenames
) throws IOException {
ZipOutputStream zout = new ZipOutputStream(
new BufferedOutputStream(
new FileOutputStream(zipFilename)
)
);
byte[] data = new byte[512];
int bc;
for (int i = 0; i < filenames.length; i++) {
InputStream fin = new BufferedInputStream(
new FileInputStream(filenames[i])
);
ZipEntry entry = new ZipEntry(StringUtil.stripPath(archFilenames[i]));
zout.putNextEntry(entry);
while ((bc = fin.read(data, 0, 512)) != -1) {
zout.write(data, 0, bc);
}
zout.flush();
}
zout.close();
}
public static void unzip(
String zipFilename, Collection filenames, String outdir
) throws IOException {
unzip(
zipFilename,
(String[])filenames.toArray(new String[filenames.size()]),
outdir
);
}
public static void unzip(
String zipFilename, String[] filenames, String outdir
) throws IOException {
ZipFile zipFile = new ZipFile(zipFilename);
Enumeration entries = zipFile.entries();
L1: while(entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry)entries.nextElement();
for (int i = 0; i < filenames.length; i++) {
if (entry.getName().equals(filenames[i])) {
byte[] buffer = new byte[1024];
int len;
InputStream zipin = zipFile.getInputStream(entry);
BufferedOutputStream fileout = new BufferedOutputStream(
new FileOutputStream(outdir + "\\"+filenames[i])
);
while((len = zipin.read(buffer)) >= 0)
fileout.write(buffer, 0, len);
zipin.close();
fileout.flush();
fileout.close();
continue L1;
}
}
}
}
public static void unzip(String zipFilename, String outdir) throws IOException {
ZipFile zipFile = new ZipFile(zipFilename);
Enumeration entries = zipFile.entries();
while(entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry)entries.nextElement();
byte[] buffer = new byte[1024];
int len;
InputStream zipin = zipFile.getInputStream(entry);
BufferedOutputStream fileout = new BufferedOutputStream(
new FileOutputStream(outdir + "\\" +entry.getName())
);
while((len = zipin.read(buffer)) >= 0)
fileout.write(buffer, 0, len);
zipin.close();
fileout.flush();
fileout.close();
}
}
}