为什么DataOutputStream没有创建"资源泄漏:流从未关闭"警告

时间:2014-07-06 05:42:58

标签: java outputstream dataoutputstream

为什么DataOutputStream不会创建“资源泄漏:流永不关闭”警告。

public static void main(String[] args) {
    try{
        DataOutputStream o = new DataOutputStream(System.out);
        o.writeInt(12);
    }
    catch(IOException ex){

    }
}

我认为这是因为它扩展了FilterOutputStream但是当扩展我自己的类时,它会发出警告。

3 个答案:

答案 0 :(得分:2)

我认为编译器(至少我的Eclipse编译器)知道永远不应该关闭System.out。试试DataOutputStream o = new DataOutputStream(new FileOutputStream("test"));,您就会看到警告。

答案 1 :(得分:1)

您可能希望为基础流创建DataOutputStream,写入它,但不要关闭基础流,因为您想要进一步编写。因此,在这种情况下,即使DataOutputStream未关闭,也没有资源泄漏。

然而,我有点惊讶你至少没有得到警告。

答案 2 :(得分:0)

DataOutputStream不是资源,因此没有资源泄漏。

底层文件或套接字或系统FD是资源。在这种情况下,它是System.out,它没有在此方法中打开,因此不关闭它不是资源泄漏。

如果您在此方法中打开了文件或套接字,则应该收到此IDE警告。