package com;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import de.innosystec.unrar.exception.RarException;
public class Test3 {
public static void unzipFiles(String filesFolder, String outputDirectory) {
File zipFolder = new File(filesFolder);
String zipFiles[];
String zipFileAbs;
try {
zipFiles = zipFolder.list();
for (int i = 0; i < zipFiles.length; i++) {
if (zipFiles[i].length() == (zipFiles[i].lastIndexOf(".zip") + 4)) {
zipFileAbs = filesFolder + File.separator + zipFiles[i];
unZip(zipFileAbs, outputDirectory);
}
}
} catch (SecurityException ex) {
ex.printStackTrace();
}
}
private static void getDir(String directory, String subDirectory) {
String dir[];
File fileDir = new File(directory);
try {
if (subDirectory == "" && fileDir.exists() != true)
fileDir.mkdir();
else if (subDirectory != "") {
dir = subDirectory.replace('\\', '/').split("/");
for (int i = 0; i < dir.length; i++) {
File subFile = new File(directory + File.separator + dir[i]);
if (subFile.exists() == false)
subFile.mkdir();
directory += File.separator + dir[i];
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public static void unZip(String zipFileName, String outputDirectory) {
try {
ZipFile zipFile = new ZipFile(zipFileName);
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
getDir(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
} else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
if (fileName.indexOf("/") != -1) {
getDir(outputDirectory, fileName.substring(0, fileName
.lastIndexOf("/")));
fileName = fileName.substring(
fileName.lastIndexOf("/") + 1, fileName
.length());
}
File f = new File(outputDirectory + File.separator
+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public static void main(String[] ar) throws RarException, IOException {
unzipFiles("D:\\test", "D:\\test");
}
}