将多个byte[]使用ZipOutputStream进行压缩并输出到响应流中
时间: 2024-01-07 21:02:59 浏览: 216
java中将多个excel打包成zip文件下载.rar
5星 · 资源好评率100%
好的,关于你的问题,可以按照以下代码示例进行实现:
```java
public void compressMultipleByteArrays(byte[][] data, OutputStream out) throws IOException {
try (ZipOutputStream zipOut = new ZipOutputStream(out)) {
for (int i = 0; i < data.length; i++) {
try (ByteArrayInputStream byteIn = new ByteArrayInputStream(data[i])) {
ZipEntry entry = new ZipEntry(String.format("file%d.dat", i));
zipOut.putNextEntry(entry);
byte[] buffer = new byte[1024];
int len;
while ((len = byteIn.read(buffer)) > 0) {
zipOut.write(buffer, 0, len);
}
zipOut.closeEntry();
}
}
}
}
```
以上代码中,我们使用ZipOutputStream将多个byte数组压缩成一个zip文件,并输出到给定的OutputStream中。首先,我们通过for循环遍历每个要压缩的byte数组,并使用ByteArrayInputStream包装每个byte数组。然后,我们创建一个ZipEntry对象,将其添加到压缩输出流中。接下来,我们循环从ByteArrayInputStream中读取数据,并将其写入ZipOutputStream中。最后,我们关闭ZipEntry,继续遍历下一个byte数组,直到所有byte数组均被处理。
阅读全文