你是一个资深java工程师,请使用BufferedInputStream 与 ServletOutputStream 将多个InputStream 下载到一个压缩包内
时间: 2023-10-25 15:22:00 浏览: 82
好的,这里是使用 BufferedInputStream 和 ServletOutputStream 将多个 InputStream 打包成压缩包并进行下载的 Java 代码:
```java
// 设置响应头,告诉浏览器下载文件
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment;filename=test.zip");
// 创建压缩包输出流
ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream());
// 遍历需要压缩的 InputStream 并添加到压缩包
for (int i = 0; i < inputStreams.size(); i++) {
InputStream inputStream = inputStreams.get(i);
BufferedInputStream bis = new BufferedInputStream(inputStream);
// 添加压缩文件到压缩包
zipOut.putNextEntry(new ZipEntry("file" + (i+1) + ".txt"));
// 将 InputStream 内容写入压缩包输出流
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) > 0) {
zipOut.write(buffer, 0, len);
}
// 关闭当前 InputStream 的输入流
bis.close();
inputStream.close();
}
// 关闭压缩包输出流
zipOut.close();
```
以上代码中,`inputStreams` 是一个包含多个 InputStream 的 List,`response` 是一个 HttpServletResponse 对象,表示发送给客户端的响应。该代码会将 `inputStreams` 中的所有 InputStream 压缩成一个名为 `test.zip` 的压缩包并发送给客户端进行下载。在此示例中,压缩包内的文件名为 `file1.txt`、`file2.txt`、`file3.txt` 等,可以根据实际需要进行修改。