要使用的XMLStreamReader我初始化它喜欢 -XMLStreamReader的不关闭打开XML文件
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader reader = f.createXMLStreamReader(new FileReader(
"somefile.xml"));
遍历它喜欢 -
if (reader.hasNext()) {
reader.next();
// do something with xml data
}
最后关闭它喜欢 -
reader.close();
这看起来是一个正常的流程,但我看到一些奇怪的行为。即使在关闭阅读器之后,操作系统也不允许删除/移动xml文件,除非我退出Java程序。在Win2k8服务器上运行时,出现错误消息,说java.exe正在使用此xml文件。
所以,我有几个问题 -
- 我需要明确关闭每个的FileReader收盘?
- 如何找出哪个java代码路径使这个文件句柄保持打开状态。
寻找@ XMLStreamReader的close()的文档,我得到以下内容 - “释放与此Reader相关的任何资源。此方法不会关闭底层输入源。
“底层输入源”是什么意思? 为什么读者的close()没有关闭?
[关闭()](http://download.oracle.com/javase/6/docs/api/javax/xml/stream/XMLStreamReader.html#close())方法的明确的API说它不关闭底层的_Reader_对象。也许在答案中引用API中的句子。 – Progman 2011-05-07 15:02:01
什么对我的第二个问题 - 我如何找出哪个Java代码路径保持这个文件句柄打开? – siddharth178 2011-05-09 12:00:35