Java读取解压zip文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
* @author Wayss.
* @date 2019/9/12.
*/
public class ReadZIP {
public static void main(String[] args) throws IOException {
//zip路径
String fileZip = "src/main/resources/template.zip";
//zip解压的目录
File destDir = new File("src/main/resources/unzip");
byte[] buffer = new byte[1024];
//zip中含有中文必须用GBK了,UTF-8都报错
Charset charset = Charset.forName("GBK");
ZipInputStream zis = new ZipInputStream(new FileInputStream(fileZip), charset);
//ZipEntry是ZIP中每个文件的对象,包括普通文件和目录文件
ZipEntry zipEntry;
while ((zipEntry = zis.getNextEntry()) != null) {
if (zipEntry.isDirectory()) {
continue;
}
//新建文件
File newFile = newFile(destDir, zipEntry);
//往文件中写数据
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
zis.closeEntry();
zis.close();
}
/**
* @param destinationDir 文件将要存放的路径
* @param zipEntry zipEntry对象
* @return
* @throws IOException
*/
public static File newFile(File destinationDir, ZipEntry zipEntry) throws IOException {
//获取文件名,并新建一个该文件名的文件
String[] dirArr = zipEntry.getName().split("/");
File destFile = new File(destinationDir, dirArr[dirArr.length - 1]);
return destFile;
}
}
我的项目目录结构是这样:
参考:Zipping and Unzipping in Java:https://www.baeldung.com/java-compress-and-uncompress