1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| @GetMapping(value = "download") public void download(HttpServletResponse response) { try(OutputStream outputStream = response.getOutputStream(); ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream, StandardCharsets.UTF_8) ) { response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + new String("压缩文件.zip".getBytes("UTF-8"), "ISO-8859-1"));
File[] files = new File("").listFiles(); for (File file : files) { compress(zipOutputStream, new FileInputStream(file), file.getName()); } zipOutputStream.flush(); } catch (IOException e) { }
}
private static void compress(ZipOutputStream zipOutputStream, InputStream inputStream, String fileName) throws IOException { if (inputStream == null) return; zipOutputStream.putNextEntry(new ZipEntry(fileName)); int bytesRead; byte[] buffer = new byte[FileUtil.BUFFER_SIZE]; while ((bytesRead = inputStream.read(buffer)) != -1) { zipOutputStream.write(buffer, 0, bytesRead); } zipOutputStream.closeEntry(); inputStream.close(); }
|