我们总是要关闭流吗?

时间:2011-03-20 12:50:25

标签: java

有一个FileInputStream,我想知道我是否需要关闭它?如果是,如果我将此流对象传递给另一个方法,我可以关闭该子方法吗?

5 个答案:

答案 0 :(得分:2)

是的,您可以在传递它的方法中关闭流。

但要注意。如果在方法调用后使用相同的流,它将保持关闭状态。

最佳做法是在完成所有操作后关闭流。

答案 1 :(得分:2)

是 - 如果您确定不会再将任何内容写入流中。

不 - 例如在Servlet中使用outputStream - 你得到这个流,写入它们但你不关闭它。这是因为以后可以访问相同的流。主要规则是:始终关闭您自己打开的溪流

答案 2 :(得分:1)

是的,你应该关闭它,你可以关闭它,如果你把它传递给一个子方法。如果你将它传递给Reader,如果你在Reader上调用close,它也会关闭流。

答案 3 :(得分:1)

您可以随意关闭流。但是您应该关闭打开它的流,以提高可读性。您仍然可以使用其他方法处理流:

 try {
     InputStream stream = //open the stream;
     PerformActionOnStream(s);
 } catch (IOException e) {
     //handle error
 } finally {
    stream.close();
 }

没有理由关闭PerformActionOnStream()中的信息流。完成后再回来。

java 7中更好地简单

try(InputStream stream = new MyStream()) {
    // code
} catch (Exception e) {
    //
}

答案 4 :(得分:0)

您应始终关闭流以释放操作系统上的开放资源。打开流总是会返回一个标识符,您可以使用该标识符在代码中的任何位置关闭它(只要标识符有效),无论是来自其他方法还是类。