我当前正在尝试运行线程以从目录读取文件并进行解析。 该线程将持续监视目录并将侦听的文件发送给进程进行解析。
在使用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 ;