每天分享java小知识 小干活,欢迎关注转发评论交流,每天一点进步!
package com.zldc.oaToKnowledgePlugin.util;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.springframework.util.StringUtils;
/**
* 解压Zip文件工具类
*
* @author pzx
*
*/
public class ZipUtil {
private static final int buffer = 2048;
/**
* @param path 文件路径
* @param savePath 要解压到路径
* @param reName 解压后的文件名称
* @return
*/
public static boolean unZip(String path, String savePath, String reName) {
int count = -1;
File file = null;
InputStream is = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
File savepathFile = new File(savePath); // 创建保存目录
if (!savepathFile.exists()) {
savepathFile.mkdirs();
}
ZipFile zipFile = null;
try {
zipFile = new ZipFile(path);
Enumeration<?> entries = zipFile.entries();
while (entries.hasMoreElements()) {
byte buf[] = new byte[buffer];
ZipEntry entry = (ZipEntry) entries.nextElement();
String filename = entry.getName().substring(entry.getName().lastIndexOf("\\") + 1,
entry.getName().length());
boolean ismkdir = false;
if (filename.lastIndexOf("/") != -1) { // 检查此文件是否带有文件夹
ismkdir = true;
}
if (!StringUtils.isEmpty(reName)) {
filename = savePath + reName;
} else {
filename = savePath + filename;
}
if (entry.isDirectory()) { // 如果是文件夹先创建
file = new File(filename);
file.mkdirs();
continue;
}
file = new File(filename);
if (!file.exists()) { // 如果是目录先创建
if (ismkdir) {
new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); // 目录先创建
}
}
file.createNewFile(); // 创建文件
is = zipFile.getInputStream(entry);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos, buffer);
while ((count = is.read(buf)) > -1) {
bos.write(buf, 0, count);
}
bos.flush();
bos.close();
fos.close();
is.close();
}
zipFile.close();
} catch (IOException ioe) {
ioe.printStackTrace();
return false;
} finally {
try {
if (bos != null) {
bos.close();
}
if (fos != null) {
fos.close();
}
if (is != null) {
is.close();
}
if (zipFile != null) {
zipFile.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
}