/** 解压 zip 文件。
* @param zipFilePath zip 文件路径
* @param unzipDirPath 解压目录
* */
public static void unZip(String zipFilePath, String unzipDirPath) {
int buffer = 2048;
int count = -1;
File dir = new File(unzipDirPath);
if (!dir.exists()) {
dir.mkdirs();
}
if (!unzipDirPath.endsWith("/")) {
unzipDirPath += "/";
}
try {
// java.io.FileInputStream
FileInputStream fis = new FileInputStream(zipFilePath);
// java.util.zip.ZipInputStream
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
// java.util.zip.ZipEntry
ZipEntry entry = null;
while ((entry = zis.getNextEntry()) != null) {
byte data[] = new byte[buffer];
String entryName = entry.getName().replace("\\", "/");
// 文件名以 / 结尾,这是一个目录,创建目录后直接跳过
if (entryName.endsWith("/")) {
new File(unzipDirPath + entryName).mkdirs();
continue;
}
// 文件名中包含目录,则先创建该目录
if (entryName.contains("/")) {
String _path = unzipDirPath + entryName.substring(0, entryName.lastIndexOf("/") + 1);
File _dir = new File(_path);
if (!dir.exists()) {
_dir.mkdirs();
}
}
String path = unzipDirPath + entryName;
File file = new File(path);
file.createNewFile();
// java.io.FileOutputStream
FileOutputStream fos = new FileOutputStream(file);
// java.io.BufferedOutputStream
BufferedOutputStream bos = new BufferedOutputStream(fos, buffer);
while((count = zis.read(data, 0, buffer)) != -1) {
bos.write(data, 0, count);
}
bos.flush();
bos.close();
}
zis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
在 Java 中解压 zip 文件
最新推荐文章于 2022-10-11 13:21:19 发布