gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:26 24 4
gpt4 key购买 nike

为了使用 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();

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

所以我有几个问题-

  1. 我是否需要明确关闭每个 FileReader 的关闭?
  2. 我如何找出哪个 Java 代码路径使该文件句柄保持打开状态。

查看 @XMLStreamReader 的 close() 文档,我得到以下信息 - “释放与此 Reader 关联的任何资源。此方法不会关闭底层输入源。”

“底层输入源”是什么意思?为什么它没有被读者的 close() 关闭?

最佳答案

文档中提到的底层输入源正是您应该关闭的。将 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

关于java - XMLStreamReader 没有关闭打开的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com