Java 常用工具类(30) : File工具类_Lxinccode的博客-CSDN博客
maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
import org.apache.commons.compress.archivers.ArchiveException;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.jar.JarArchiveEntry;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import java.io.*;
/**
* @Author: liyue
* @Date: 2022/03/01/22:00
* @Description:
*/
public class UnzipUtil {
public static void main(String[] args) {
unzip("/Users/liyue/Desktop/test/unzipTest/test.sh.zip", "/Users/liyue/Desktop/test/unzipTest");
}
/**
* 解压zip文件
*
* @param zipPath zip文件路径
* @param unzipPath 保存路径
*/
public static void unzip(String zipPath, String unzipPath) {
File warFile = new File(zipPath);
try {
//获得输出流
BufferedInputStream bufferedInputStream = new BufferedInputStream(
new FileInputStream(warFile));
ArchiveInputStream in = new ArchiveStreamFactory()
.createArchiveInputStream(ArchiveStreamFactory.JAR,
bufferedInputStream);
JarArchiveEntry entry = null;
//循环遍历解压
while ((entry = (JarArchiveEntry) in.getNextEntry()) != null) {
if (entry.getName().indexOf("__MACOSX") != -1)
continue;
if (entry.isDirectory()) {
new File(unzipPath, entry.getName()).mkdir();
} else {
OutputStream out = FileUtils.openOutputStream(new File(
unzipPath, entry.getName()));
IOUtils.copy(in, out);
out.close();
}
}
in.close();
} catch (FileNotFoundException e) {
System.err.println("未找到压缩文件");
} catch (ArchiveException e) {
System.err.println("不支持的压缩格式");
} catch (IOException e) {
System.err.println("文件写入发生错误");
}
}
}
END。