DataInputStream关闭

时间:2016-03-02 08:39:48

标签: java inputstream

当我将InputStream传递给此方法时, 它关闭了吗?

public void foo(InputStream is) {
    DataInputStream dis = new DataInputStream(is);
    dis.close();
}

超类FilterInputStream也将close方法重新定义为关闭基础输入流,因此它将关闭参数

该操作会影响来电者的输入流吗?

5 个答案:

答案 0 :(得分:2)

是的,传入的流将被关闭。

关闭你没有打开过的溪流几乎不是一个好主意,因此你不应该在这种方法中关闭dis

DataInputStream不拥有自己的系统资源,因此不关闭它不会导致任何泄漏。你可以简单地打开它。或者,您可以从方法返回它,以便调用者可以关闭它。

答案 1 :(得分:2)

是的,DataInputStream是一个超过InputStream is的装饰者类。它不是InputStream自我。

因此,DataInputStream.close隐含close隐含InputStream。{/ p>

/** * Closes this input stream and releases any system resources * associated with the stream. * This * method simply performs <code>in.close()</code>. * * @exception IOException if an I/O error occurs. * @see java.io.FilterInputStream#in */ public void close() throws IOException { in.close(); }

答案 2 :(得分:1)

将关闭InputStream。

从Java SE 7开始,最好使用try-with-resources,以便自动关闭流。

答案 3 :(得分:1)

您应该只在调用方法中关闭InputStream。无论何时使用与输入或输出流相关的任何操作,都使用Try Catch块,如果任何流保持打开状态,它将由java处理

答案 4 :(得分:0)

DataInputStream实现CoseableAutoClose接口,因此类close中的方法DataInputStream关闭此输入流并释放与此关联的任何系统资源流。此方法只执行in.close()。 在接口Closeable中通过关闭指定,在接口AutoCloseable中关闭覆盖类InputStream中的关闭。

抛出: IOException - 如果发生I / O错误。