我写了这个简单的代码,但我无法理解为什么它一直让我回复错误, 你能救我吗?
{
/*XesXmlParser parser = new XesXmlParser();*/
XMxmlParser parser = new XMxmlParser();
InputStream is = null;
try {
is = new FileInputStream("C:\\Users\\examplefolder\\prova1.mxml");
parser.parse(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
java.util.List<XLog> list = parser.parse(is);
System.out.println(list);
}
它给了我这个错误:
{Exception in thread "main" java.io.IOException: Stream Closed
...
at org.deckfour.xes.in.XMxmlParser.parse(XMxmlParser.java:196)
at provaletturalog.LeggiLog.main(LeggiLog.java:26)
答案 0 :(得分:0)
第二个parser.parse(is)
调用导致错误,因为前一个方法调用已经使用了流。
所以你需要这样的东西:
XMxmlParser parser = new XMxmlParser();
List<XLog> list = Collections.emptyList();
try (InputStream is = new FileInputStream("C:\\Users\\examplefolder\\prova1.mxml")) {
list = parser.parse(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(list);
我使用了try with resources构造,因为应该关闭流以避免泄漏。