@GetMapping("/zipFile")
public void zipFile() throws IOException {
//这个是文件夹的绝对路径,如果想要相对路径就自行了解写法
String sourceFile = "E:\\2-project\\15-henanhuagong\\CEPOP\\trunk\\zhnh\\uploadFile\\hnec";
//这个是压缩之后的文件绝对路径
FileOutputStream fos = new FileOutputStream(
"E:\\2-project\\15-henanhuagong\\CEPOP\\trunk\\zhnh\\uploadFile\\hhnec.zip");
ZipOutputStream zipOut = new ZipOutputStream(fos);
File fileToZip = new File(sourceFile);
zipFile(fileToZip, fileToZip.getName(), zipOut);
zipOut.close();
fos.close();
}
private void zipFile(File fileToZip, String fileName, ZipOutputStream zipOut) throws IOException {
if (fileToZip.isHidden()) {
return;
}
if (fileToZip.isDirectory()) {
if (fileName.endsWith("/")) {
zipOut.putNextEntry(new ZipEntry(fileName));
zipOut.closeEntry();
} else {
zipOut.putNextEntry(new ZipEntry(fileName + "/"));
zipOut.closeEntry();
}
File[] children = fileToZip.listFiles();
for (File childFile : children) {
zipFile(childFile, fileName + "/" + childFile.getName(), zipOut);
}
return;
}
FileInputStream fis = new FileInputStream(fileToZip);
ZipEntry zipEntry = new ZipEntry(fileName);
zipOut.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
fis.close();
}
原文https://www.jianshu.com/p/f7b69e042afc