Dal forum della sun:
codice:
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class Zipping {
public static ArrayList unzip(InputStream inputStream, String destinationDir) throws IOException {
ArrayList result = null;
final int BUFFER = 2048;
if (inputStream != null && destinationDir != null) {
result = new ArrayList();
ZipInputStream zis = null;
BufferedOutputStream bos = null;
try {
zis = new ZipInputStream(new BufferedInputStream(inputStream));
ZipEntry entry = null;
while((entry = zis.getNextEntry()) != null) { //for each zip entry
if (entry.isDirectory()) { //directory
File dir = new File(destinationDir + File.separator + entry.getName());
dir.mkdirs();
} else { //file
int count;
byte data[] = new byte[BUFFER];
String fileName = destinationDir + File.separator + entry.getName();
FileOutputStream fos = new FileOutputStream(fileName);
bos = new BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(data, 0, BUFFER)) != -1) {
bos.write(data, 0, count);
}
bos.flush();
result.add(fileName);
}
}//next zip entry
zis.close();
} finally {
if (bos != null) { try { bos.close(); } catch (IOException ioe) { /* ignore */ } }
if (zis != null) { try { zis.close(); } catch (IOException ioe) { /* ignore */ } }
}
}//else: input value unavailable
return result;
}//unzip()
public static void main (String[] args) {
if (args.length != 2) {
System.out.println("Uso: java Zipping File.ZIP Cartella_di_Destinazione");
System.exit(0);
}
else {
try {
unzip(new FileInputStream(args[0]), args[1]);
}
catch (Exception e) {
e.toString();
}
}
}