package uk.co.mmscomputing.application.install;
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class Unzip{
private Log log;
private ZipFile file=null;
private byte[] buffer=new byte[8092];
public Unzip(Log log){
this.log=log;
}
public void extract(String filename)throws IOException{
file=new ZipFile(filename);
Enumeration files=file.entries();
while(files.hasMoreElements()){
extract((ZipEntry)files.nextElement());
}
}
private void extract(ZipEntry e)throws IOException{
String name=e.getName();
if(name.endsWith("/")){
new File(name).mkdirs();
return;
}
log.msg("extracting "+name);
FileOutputStream out=new FileOutputStream(name);
InputStream in=file.getInputStream(e);
int n=0;
while((n=in.read(buffer))>0){
out.write(buffer,0,n);
}
in.close();out.close();
}
}
// Ian F Darwin, Java Cookbook, O'Reilly p.269