/**
* 解压zip压缩文件
* @param needFilePath 需要解压的文件地址
* @param savePath 解压后文件保存地址
* @throws Exception
*/
public static void unCompress(String needFilePath,String savePath) throws Exception {
OutputStream os = null;
InputStream is = null;
// 获取当前需要解压的文件
File srcFile = new File(needFilePath);
if (!srcFile.exists()) {
throw new Exception(srcFile.getPath() + "所指文件不存在");
}
// 插件保存的目录
File pathFile = new File(savePath);
if (!pathFile.exists()) {
pathFile.mkdirs();
}
// 设置编码格式,防止中文名称目录读取不到和中文乱码
ZipFile zip = new ZipFile(srcFile, Charset.forName("GBK"));
Enumeration<? extends ZipEntry> entryEnum = zip.entries();
if (null != entryEnum) {
ZipEntry zipEntry = null;
while (entryEnum.hasMoreElements()) {
zipEntry = (ZipEntry) entryEnum.nextElement();
if (zipEntry.getSize() > 0) {
File targetFile = FileUtilZip.buildFile(savePath
+ File.separator + zipEntry.getName(), false);
os = new BufferedOutputStream(new FileOutputStream(targetFile));
is = zip.getInputStream(zipEntry);
byte[] buffer = new byte[4096];
int readLen = 0;
while ((readLen = is.read(buffer, 0, 4096)) >= 0) {
os.write(buffer, 0, readLen);
os.flush();
}
is.close();
os.close();
}
if (zipEntry.isDirectory()) {
String pathTemp = savePath + File.separator
+ zipEntry.getName();
File file = new File(pathTemp);
file.mkdirs();
}
}
}
}
测试
public static void main(String[] args) {
try {
FileAboutZip.unCompress("F:\\project\\镇雄以勒项目2#清单.zip", "F:\\project\\zip");
} catch (Exception e) {
e.printStackTrace();
}
}
删除
// zip文件解压后保存得文件,在执行完导入之后需要删除文件
// 删除文件夹下所有的文件
public static boolean delAllFile(String path) {
boolean flag = false;
File file = new File(path);
if (!file.exists()) {
return flag;
}
if (!file.isDirectory()) {
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);//再删除空文件夹
flag = true;
}
}
return flag;
}
// 删除文件夹
public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); //删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
File myFilePath = new File(filePath);
myFilePath.delete(); //删除空文件夹
} catch (Exception e) {
e.printStackTrace();
}
}