Java 读写 XML 数据文件时出现“文件过早结束”错误

Posted

技术标签:

【中文标题】Java 读写 XML 数据文件时出现“文件过早结束”错误【英文标题】:"Premature end of file" error when Java read and writes XML data files 【发布时间】:2010-10-17 00:54:36 【问题描述】:

我一直在使用 JDOM 库通过 Java Servlet 读写 XML 文件。

问题是,当我使用 AJAX 向在 XML 文件中读取和写入数据的 servlet 发送许多请求时,很多时候它无法显示错误:文件过早结束。如何将所有这些读/写同步到文件,或者有没有其他方法可以防止这些问题?如果需要更多详细信息,请告诉我。

在这种情况下使用线程有什么好处吗?

非常感谢!

【问题讨论】:

【参考方案1】:

尝试将所有写入请求添加到 处理队列,然后通过队列的这些元素构建/附加 XML。

【讨论】:

【参考方案2】:

我也遇到过这个问题。我的经验是……

    清理项目 重建项目

那么它就会运行成功....

【讨论】:

【参考方案3】:

我遇到过这类问题,但完全不一样。我正在分享我对这个错误的经验。如有不便,敬请见谅。

我遇到了以下问题

    我必须用动态变量数据形成一个 xml 文件。并通过 Java 中的 PostMethod 将该 xml 发布到 URL。

    通常它可以工作。但是当动态变量数据为空时。然后它显示“文件过早结束”。

解决方案:

    只检查变量是否为空。它对我有用。

【讨论】:

仅供参考,“完全不一样”并不是你的意思,我想。应该是“不完全一样”。 :)【参考方案4】:

两种可能的解决方案是:

将您的文件写入 thename.xml.part,然后在完成/关闭后重命名为 thename.xml,这使得写入更接近于原子性 - 阅读器在确定完成之前无法读取它,只要它只查找“.xml”文件。 或者,使用数据库,原子性就是他们所做的。

【讨论】:

你能详细说明一下答案吗?我遇到了同样的错误,但无法理解你的答案。 @Ry4an 完美解决方案!

以上是关于Java 读写 XML 数据文件时出现“文件过早结束”错误的主要内容,如果未能解决你的问题,请参考以下文章

System.Xml.XmlException '根级别的数据无效,第 1 行,位置 1' 当我从 1 个 xml 文件更改为 5 时出现错误

在更新 xml 文件时出现这样的错误

ORA-06502: PL/SQL: 尝试将 XML 保存到文件时出现数字或值错误

重新加载 UITableview 时出现问题..!

出现换行时转换包含 XML 数据的 stramreader 文本时出现问题

接受 SDK 许可时出现“java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema”