@ResponseBody
@RequestMapping("/szctest1")
public void zip1(HttpServletResponse response,HttpServletRequest request) throws IOException {
String path = "D:\\test"; //要压缩的目录
String zipName = "test.zip";
response.setContentType("application/octet-stream; charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename="+zipName+"");
try (ZipOutputStream zipOs = new ZipOutputStream(response.getOutputStream())) {
traverseFolder2(path,response,zipOs);
} catch (IOException ioException) {
}
}
public void traverseFolder2(String path,HttpServletResponse response,ZipOutputStream zipOs) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
System.out.println("文件夹是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath(),response,zipOs);
} else {
String absolutePath = file2.getAbsolutePath();
System.out.println("文件:" + absolutePath);
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file2))) {
zipOs.putNextEntry(new ZipEntry(absolutePath.substring(absolutePath.lastIndexOf("\\")+1)));
IOUtils.copy(bis, zipOs);
zipOs.closeEntry();
} catch (IOException ioException) {
}
}
}
}
} else {
System.out.println("文件不存在!");
}
}