java - 关闭特定输出流的方法

标签 java stream outputstream zipoutputstream

你认为这段代码正确地关闭了输出流入口吗?知道这不是同一类型的输出流。

OutputStream out = new JarOutputStream(new FileInputstrem(fileName));
                       ...
((ZipOutputStream)out).closeEntry();

但考虑到两者都是输出流,我认为它们以相同的方式关闭。因此在我的例子中 ((ZipOutputStream)out).closeEntry();((JarOutputStream)out).closeEntry();

相同

如果你认为是真的,你能确认一下吗?如果错了,你能纠正我吗? 谢谢。

最佳答案

如果您需要在 out 变量上调用特定于 ZipOutputStream 的方法,那么它的类型不应该是 OutputStream,而是 ZipOutputStream:

ZipOutputStream out = new JarOutputStream(new FileInputstrem(fileName));
                   ...
out.closeEntry();

这不会造成任何问题,因为自从 JarOutputStream 扩展了 ZipOutputStream,一个 JarOutputStream 也是一个 ZipOutputStream (也是一个 OutputStream,也是一个 Object)。

关于java - 关闭特定输出流的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645534/

相关文章:

java - 通过 java 从网络机器连接到 Oracle 11g 失败

java - 使用 JPanel 在 Java 中绘图

java - 如何使用其他方法的输入?

tcp - 使用 protobuf-net 反序列化 Protocol Buffer 时如何指定流长度?

Azure 流分析输入损坏了包含时区信息的字符串

java - 如何在 Java 中将数组写入 OutputStream?

java - 重新启动程序后从属性文件中读取

java - 尝试实现库时如何修复 list 合并失败错误?

c - 独立的 C 模块通过控制模块下的 stdin stdout 协同工作

java - 如何检查套接字的输出流是否关闭?