Hallo,
ich habe ein Problem beim Auslesen mehrerer Dateien aus einer Zip-Datei. Hier mein Code:
Eine einzelne XML-Datei auslesen, funktioniert wunderbar. Nun wollte ich aber 3 XML-Dateien aus der ZIP-Datei auslesen. Bei Google (und auch in diesem Forum) habe ich eben die Lösung mit dem "while getNextExtry() != null" gefunden. Aber sobald die erste XML-Datei eingelesen ist, gibt es einen Fehler, wenn die while-Schleife zum zweiten mal für die nächste Datei durchlaufen werden soll. Das sagt das Debug-Fenster:
Ich versteh allerdings nicht, was genau falsch ist? Die drei XML-Dateien habe ich zuvor problemlos folgendermaßen erstellt:
Hat jemand eine Ahnung, wo der Fehler liegen könnte?
Vielen Dank und Gruß
Daniel
ich habe ein Problem beim Auslesen mehrerer Dateien aus einer Zip-Datei. Hier mein Code:
Code:
try {
ZipInputStream zip = new ZipInputStream(new FileInputStream(fp));
ZipEntry entry;
while ((entry=zip.getNextEntry())!=null) {
String entryname = entry.getName();
if (entryname.equals("zknFile.xml") ||
entryname.equals("authorFile.xml") ||
entryname.equals("keywordFile.xml")) {
try {
SAXBuilder builder = new SAXBuilder();
Document doc = new Document();
doc = builder.build(zip);
if (entryname.equals("zknFile.xml")) dataObj.setZknData(doc);
if (entryname.equals("authorFile.xml")) dataObj.setAuthorData(doc);
if (entryname.equals("keywordFile.xml")) dataObj.setKeywordData(doc);
}
catch (JDOMException e) {
System.out.println("Fehler bei SaxBuilder");
e.printStackTrace();
Logger.getLogger(CLoadDialog.class.getName()).log(Level.SEVERE, null, e);
}
}
}
zip.close();
}
catch (IOException e) {
System.out.println("Fehler bei NextEnry");
e.printStackTrace();
Logger.getLogger(CLoadDialog.class.getName()).log(Level.SEVERE, null, e);
}
Eine einzelne XML-Datei auslesen, funktioniert wunderbar. Nun wollte ich aber 3 XML-Dateien aus der ZIP-Datei auslesen. Bei Google (und auch in diesem Forum) habe ich eben die Lösung mit dem "while getNextExtry() != null" gefunden. Aber sobald die erste XML-Datei eingelesen ist, gibt es einen Fehler, wenn die while-Schleife zum zweiten mal für die nächste Datei durchlaufen werden soll. Das sagt das Debug-Fenster:
Fehler bei NextEnry
java.io.IOException: Stream closed
at java.util.zip.ZipInputStream.ensureOpen(ZipInputStream.java:44)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:68)
at zettelkasten.CLoadDialog$LoadFileTask.doInBackground(CLoadDialog.java:313)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:637)
Ich versteh allerdings nicht, was genau falsch ist? Die drei XML-Dateien habe ich zuvor problemlos folgendermaßen erstellt:
Code:
ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(data.getFilePath()));
XMLOutputter out = new XMLOutputter();
zip.putNextEntry(new ZipEntry("zknFile.xml"));
out.output(data.getZknData(), zip);
zip.putNextEntry(new ZipEntry("authorFile.xml"));
out.output(data.getAuthorData(), zip);
zip.putNextEntry(new ZipEntry("keywordFile.xml"));
out.output(data.getKeywordData(), zip);
zip.close();
Hat jemand eine Ahnung, wo der Fehler liegen könnte?
Vielen Dank und Gruß
Daniel