微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – XMLStreamReader没有关闭打开的xml文件

要使用 XMLStreamReader我正在初始化它像 –
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader reader = f.createXMLStreamReader(new FileReader(
        "somefile.xml"));

迭代它像 –

if (reader.hasNext()) {
    reader.next();
    // do something with xml data
}

最后关闭它像 –

reader.close();

这看起来是正常的流程,但我看到一些奇怪的行为.即使在关闭阅读器之后,OS也不允许我删除/移动xml文件,除非我退出java程序.在Win2k8服务器上运行时,我收到错误消息,说java.exe正在使用此xml文件.

所以我有几个问题 –

>我是否需要明确关闭每个FileReader的关闭
>如何找出保持此文件句柄处于打开状态的java代码路径.

看看XMLStreamReader的close()文档,我得到以下内容 – “释放与此Reader相关的任何资源.此方法不会关闭底层输入源.”

“底层输入源”是什么意思?
为什么不被读者关闭()?

解决方法

文档中提到的基础输入源正是您应该关闭内容.将FileReader放入局部变量以便能够关闭它:
XMLInputFactory f = XMLInputFactory.newInstance();
FileReader fr = new FileReader("somefile.xml");
XMLStreamReader reader = f.createXMLStreamReader(fr);

// process xml

reader.close();
fr.close();

//suggest using apache commons IoUtils.closeQuietly(fr); this way you
// don't have to deal with exceptions if you don't want

原文地址:https://www.jb51.cc/java/121751.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐