XML文件解析中的文件过早终止异常经常发生,但不是定期发生。

时间:2018-08-01 13:02:22

标签: java multithreading xml-parsing

我当前正在尝试运行线程以从目录读取文件并进行解析。 该线程将持续监视目录并将侦听的文件发送给进程进行解析。

在使用FTP将文件连续放置到指定目录中时,我遇到“文件的结尾过早-org.xml.sax.SAXParseException”。

我尝试检查文件传输是否完成,并且那里没有错误。 我尚未使用inputSource / InputStream来读取文件。除此之外,我确保我没有读取空文件。我只是使用Dom解析器解析方法来解析给定的文件。

我将同时附上XML文件和Java程序以供进一步参考。

我已经阅读了许多博客和链接。但是,没有运气。任何帮助都会非常有帮助。

  public class DirectoryWatcher implements Runnable {
  private DocumentBuilderFactory factory;
  private XPath xpath;
  private Document doc;

  public DirectoryWatcher() {

    this.factory = DocumentBuilderFactory.newInstance();
    this.factory.setNamespaceAware(true); // XML contains name space pattern. Hence without configuration of name
                                            // space, XML will not be parsed
    this.xpath = XPathFactory.newInstance().newXPath();

}


@Override
public void run() {
    while (!cancel) {
        try {
            for (String file : directory.list(filter)) {
                doc = factory.newDocumentBuilder().parse(directory.getAbsolutePath() + File.separator + file);
                markAsProcessed(file);
                TimeUnit.MILLISECONDS.sleep(interval);
            }

        } catch (InterruptedException e) {
            cancel = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
}

Error while parsing the file xx/parked.xml Premature end of file. 
[Ljava.lang.StackTraceElement;@38661fd
org.xml.sax.SAXParseException; systemId: file:///home/sample.xml ; 

0 个答案:

没有答案