我使用How to convert InputStream to virtual File上的答案,该答案使用org.apache.commons.io.IOUtils
将给定的InputStream
复制到FileOutputStream
,以便创建File
我应该关闭给定的InputStream
吗?
答案 0 :(得分:6)
关闭InputStream是最佳做法。请参阅此question。
org.apache.commons.io.IOUtils.copy
不要关闭流。所以你必须关闭。
请参阅Javadoc
只要有可能,此类中的方法不会刷新或关闭 流。这是为了避免对此进行不可移植的假设 溪流的起源和进一步使用。因此呼叫者仍然负责 用于在使用后关闭流。
答案 1 :(得分:1)
修改:再次阅读问题后,我必须更正我的答案,因为问题显然是来自引用答案的InputStream
,而不是OutputStream
。需要关闭InputStream
(请参阅@Adi的回答)。然而,OutputStream
位于try-with-resources声明中,因此您不需要关闭。
问题中引用的答案是使用Java 7 try-with-resources Statement,它确保在语句结束时关闭资源。
try-with-resources语句是一个声明一个的try语句 或更多资源。资源是必须在之后关闭的对象 程序完成了。 try-with-resources语句 确保在声明结束时关闭每个资源。
因此对于OutputStream
,否,在特定情况下,您不需要自己关闭OutputStream
,前提是您正在尝试使用资源。
InputStream
但需要关闭。