public static void unZip(String zipFileName, String outputDirectory)
{
try
{
ZipFile zipFile = new ZipFile(zipFileName);
Enumeration e = zipFile.entries();
ZipEntry zipEntry = null;
createDirectory(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().replace('\\', '/');
if (fileName.indexOf("/") != -1)
{
createDirectory(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)
{
//int c;
out.write(by, 0, c);
}
out.close();
in.close();
}
}
zipFile.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private static void createDirectory(String directory, String subDirectory)
{
File fl = new File(directory);
try {
if (("".equals(subDirectory)) && (!fl.exists()))
{
fl.mkdir();
System.out.println("创建目录" + directory + "成功");
}
else if (subDirectory != "")
{
String[] dir = subDirectory.replace('\\', '/').split("/");
for (int i = 0; i < dir.length; i++)
{
File subFile = new File(directory + File.separator + dir[i]);
if (!subFile.exists())
subFile.mkdir();
directory = directory + File.separator + dir[i];
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}