首頁  >  問答  >  主體

Java的HttpURLConnecction的getInputStream是否需要close?

RT,就酱
Java的HttpURLConnecction的getInputStream是否需要close?

这个流是否是系统维护的?
因为不是我打开的

迷茫迷茫2744 天前473

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-18 10:51:55

    養成習慣所有不再用的InputStream和OutputStream都關掉就好了,不管API背後的實作有沒有自動幫你關掉。
    如果用Java 1.7+寫的話,用try-with-resource處理起來就非常簡單了:

    try (InputStream in = urlConnection.getInputStream()) {
        ...
    } // 这里会自动调用 in.close();
    

    類似場景還有:

    • JDBC的PreparedStatement、ResultSet等都實現了AutoCloseable接口,理論上只要Connection被close掉,由它生成的這些PreparedStatement、ResultSet等也會自動close掉,但強烈建議你產生這些資源的時候用try-with -resource來管理。

    • ServletRequest/ServletResponse中的getInputStream/getOutputStream等資源也是。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:51:55

    需要

    在並發操作非常高的情況下, 如果你不關閉, 對系統資源的開銷會比較大.

    回覆
    0
  • 取消回覆