簡體   English   中英

IOUtils:是否需要關閉OutputStream?

[英]IOUtils: is it required to close OutputStream?

這個答案中 ,一個人建議使用IOUtils.copy但他沒有關閉OutputStream。 這是他的例子:

InputStream is = new URL(imgUrl).openStream();
OutputStream os = servletResponse.getOutputStream();

IOUtils.copy(is, os);
is.close();

我在IOUtils中檢查了javadocs的copy方法,並且沒有關於OutputStream將自動關閉的信息,所以我很好奇是否需要關閉該示例中的OutputStream?

IOUtils.copy(InputStream, OutputStream)不能關閉OutputStream 您可以使用它來連接不同的InputStreams ,在這種情況下,如果它將關閉提供的Input-和/或OutputStream將是一個壞主意。

根據經驗,任何方法都應該只關閉它打開的那些蒸汽。 另請參閱我應該關閉servlet輸出流嗎?

正如您所說, 文檔沒有說明為您關閉OutputStream ,因此您需要關閉它(顯式地,或通過使用try-with-resources)。

Tomasz沒有在該答案中關閉流的原因是它是servlet響應的輸出流。 正如andih評論中所說,你只關閉你打開的溪流。 servlet容器管理servlet響應流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM