1
我有一個方法processData()
它試圖利用jsch
put()
文件送過來sftp
之前獲得成品filepath
。System.Xml.XmlException:文件意外結束在解析
class Processer {
public void processData() {
Path fileToSend = writer.buildFile(data, users, str);
try {
sender.connect();
if (sender.send(fileToSend)) {
} else {
logger.error("Upload Failed");
}
} catch (JSchException e) {
//log error
} finally {
sender.dispose();
}
}
}
class WriterClass {
public Path buildFile(Map<String, List<Data>> data, Map<String, User> users) {
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = null;
Path filePath = Paths.get(outputDir);
Path fileDir = null;
Path file = null;
try {
fileDir = Files.createDirectories(filePath);
} catch (IOException e) {
logger.error("IO error {}", e);
}
try {
file = Paths.get(fileDir.toString(), date + ".XML");
writer = new IndentingXMLStreamWriter(factory.createXMLStreamWriter(new FileWriter(file.toFile())));
writer.writeStartDocument();
writer.writeStartElement("OPEN");
//for each entry in set
writeDetail(writer, data); //writes character data
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
} catch (XMLStreamException e) {
logger.error(e.getMessage());
} catch (IOException ex) {
logger.error(ex.getMessage());
}
return file;
}
}
當文件在對面SFTP被轉移,該xml
文件不完整的遠程位置,並且不能進行解析。它在當地的道路上顯得完整。任何人都可以指出,如果我遺漏了任何東西或者writer
對象關閉或沖洗不正確?