java 文件解压到指定目录是和压缩文件相反的操作,直接上测试代码:
1、工具类代码:
/**
* 解压文件到指定目录
*/
@SuppressWarnings("rawtypes")
public static String unZipFilesTest(File zipFile) throws IOException {
log.info("unZipFiles --------begin------");
String parent = zipFile.getParent();
File pathFile = new File(parent);
if (!pathFile.exists()) {
pathFile.mkdirs();
}
//解决zip文件中有中文目录或者中文文件
ZipFile zip = new ZipFile(zipFile, Charset.forName("GBK"));
File file = null;
for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zip.getInputStream(entry);
String outPath =
(parent + "\\" + DateUtil.format(new Date(), "YYYYMMdd") + "\\" + zipEntryName).replaceAll("\\\\"
, "/");
;
//判断路径是否存在,不存在则创建文件路径
file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if (!file.exists()) {
file.mkdirs();
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
File outPathFile = new File(outPath);
if (outPathFile.exists()) {
continue;
}
OutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while ((len = in.read(buf1)) > 0) {
out.write(buf1, 0, len);
}
in.close();
out.close();
}
log.info("返回的解压后的文件目录" + file.getAbsolutePath());
log.info("unZipFiles --------end------");
return file.getAbsolutePath();
}
2、业务调用:
//直接传一个文件参数
unZipFilesTest(new File(zipPath));
3、业务调用就可以使用,当然可根据不同的场景,传不同的参数,动态修改,活学活用。