miércoles, 21 de enero de 2009

Java UNZIP

Aca les dejo un par de funciones java que permiten descomprimir un archivo ZIP por medio de código. Espero le sirvan ^_^

 private static void unzip(File f) throws IOException{
ZipFile zip;
zip = new ZipFile(f);
Enumeration e = zip.entries();
while( e.hasMoreElements() ) {
ZipEntry zen = (ZipEntry) e.nextElement();
if (zen.isDirectory()){
continue;
}
int size =(int) zen.getSize();
InputStream zis = zip.getInputStream(zen);
String extractfile = f.getParentFile().getAbsolutePath() + File.separator + zen.getName();

writeFile(zis, new File(extractfile),size);
zis.close();
}
zip.close();
}

/***
* Permite Escribir un archivo de un jar a disco
* @throws IOException
*/
private static void writeFile(InputStream zis, File file,int size) throws IOException {
File parentFile = file.getParentFile();
if(!parentFile.exists()){
parentFile.mkdirs();// this is important
}

FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
byte[] byteStream = new byte[ (int) size];
int buf = -1;
int rb = 0;
while ( ( ( (int) size - rb) > 0)) {
buf = zis.read(byteStream, rb, (int) size - rb);

if (buf == -1) {
break;
}
rb += buf;
}
fos.write(byteStream);
}
catch(IOException e) {
throw new IOException("UNZIP_ERROR");
}finally {
if(fos != null){
fos.close();
}
}
}


Nota: Este mismo código funciona para descomprimir JAR's lo unico que habria que cambiar es la "ZipFile" por "JarFile".

1 comentario:

VEDANT dijo...

Muchas gracias, tu codigo me ha sido de mucha ayuda xD