java:创建zip文件时刷新流

标签 java stream

我有像这样在 servlet 中创建 zip 文件的代码:

ByteArrayOutputStream baos =null;
baos = new ByteArrayOutputStream(); 
ZipOutputStream zos = new ZipOutputStream(baos);
for(list  of file){
    bis = new BufferedInputStream(new FileInputStream(("somefile.extn"));

    other code for add entry in zip file

    bis.close();
}
baos.flush();
zos.flush();            
zos.close(); 
baos.close();

// Return bytes

baos.toByteArray();

// Write bytes to ServletOutputStream

如果我刷新并关闭 ByteArrayOutputStream 对象 (baos) 是否有任何问题。

感谢您看这里:)

最佳答案

这是多余的。你只需要

zos.close();

关闭 ZipOutputStream 会刷新并关闭它环绕的所有其他流。请参阅 Javadoc。

您甚至不需要 ByteArrayOutputStream。您应该将 ZipOutputStream 直接连接到 servlet 输出流。

关于java:创建zip文件时刷新流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29943304/

相关文章:

java - 在java中读取字符串直到某个字符第三次匹配

java - 3D Java 编程教程不起作用

c# - 如何使用 try/catch/finally C# 有效地管理流

二进制格式的 Jquery Ajax 流音频

.net - 我怎么知道一个流已经读完了?

http - 使用 HTTP.jl 发送大文件

java - 无法执行目标 org.sonarsource.scanner.maven 对于 Artifact {null :null:null:jar}: The groupId cannot be empty

java - Hibernate ManyToOne Lazy 不工作最终类

java - 使用Java Play发送HTTP请求(WSClient初始化)

java - java中InputStream中的read函数如何读取一个字节并将其作为int返回?