我是否需要手动关闭输入流?

sup*_*erM 5 java xml xerces xml-parsing

我正在使用Xerces库来解析XML.以下是用于解析的代码段:

Document doc = builder.parse(new InputSource(new StringReader(someXMLString)));

我需要手动关闭InputStreamin InputSource还是parse方法处理它?

Jon*_*eet 6

鉴于你没有外部资源 - 只需一个StringReader- 你不需要关闭它.无论如何我会这样做...然后如果你改变代码使用不同的输入,你不会意外地有资源泄漏.

(对于一次性代码,我会离开它 - 但请注意,如果你不小心,一次性代码有一个比预期更长寿的习惯.)


Evg*_*eev 2

DocumentBuilder API 中似乎没有任何相关内容。我们可以测试它

InputStream is = new FileInputStream("test.xml") {
    @Override
    public void close() throws IOException {
        System.out.println("close");
        super.close();
    }
};
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
documentBuilder.parse(is);
Run Code Online (Sandbox Code Playgroud)

它打印close。但由于 API 中没有任何相关内容,因此无法保证此行为。