【发布时间】:2014-02-12 20:56:09
【问题描述】:
我的 DOM 解析器中有一个 DOM 解析器,在写入 XML 文件后,它似乎没有关闭 Streams。
我的程序创建一个文件,并调用此代码(如下所示)将xml-nodes 写入文件。我的程序还包含一个“删除”文件功能,该功能不起作用,因为有一些Streams未关闭Streams,因此删除文件返回false。
当我重新运行程序时,我可以删除文件。但每次我在程序内创建新文件或编辑现有文件时,程序似乎都会留下一些打开的Streams。
以下代码是留下未关闭的Stream 的部分。我试图以某种方式关闭Streamresult,但没有办法关闭它。
public void rewriteXML(){
try{
DocumentBuilderFactory song = DocumentBuilderFactory.newInstance();
DocumentBuilder songBuilder = song.newDocumentBuilder();
Document doc = songBuilder.newDocument();
Element playlist = doc.createElement("playlist");
doc.appendChild(playlist);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer tr = tf.newTransformer();
tr.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource dom = new DOMSource(doc);
StreamResult sr = new StreamResult(new FileOutputStream(fileName,false));
tr.transform(dom, sr);
System.out.println("done");
}catch(ParserConfigurationException pce){
pce.printStackTrace();
}catch(TransformerException fce){
fce.printStackTrace();
}catch(IOException ie){
ie.printStackTrace();
}
}
我需要一些方法来关闭Stream,或者修复打开的Streams 的错误,因为我不确定Stream 是什么未关闭。
【问题讨论】:
-
您可以将 FileOutputStream 声明为名为
out的变量,并在完成后调用out.close()。