Zuvor hatten wir einige Zip-Dateien in unserer Webanwendung. Wir wollten ein bestimmtes Textdokument in der Zip-Datei auslesen. Das war kein Problem:
URL url = getClass().getResource(zipfile);
ZipFile zip = new ZipFile(url.getFile().replaceAll("%20", " "));
Entry entry = zip.getEntry("file.txt");
InputStream is = zip.getInputStream(entry);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while (line != null) {
// do stuff
}
Wir haben diese Zip-Dateien jedoch in ein anderes Modul verschoben und wollen sie in ein Jar packen. Leider ist die Erstellung des ZipFile
scheitert jetzt. Ich kann eine InputStream
für das zip: aber ich habe keine Möglichkeit, einen Eingabestrom für den Eintrag selbst zu erhalten.
InputStream is = getClass().getResourceAsStream(zipfile);
ZipInputStream zis = new ZipInputStream(is);
ZipEntry entry = zis.getNextEntry();
while (entry != null && !entry.getName().equals("file.txt")) {
entry = zis.getNextEntry();
}
aber ich habe keine Möglichkeit, einen Eingabestrom für den Eintrag selbst zu erhalten. Ich habe versucht, die Länge des Eintrags zu ermitteln und die nächsten n Bytes aus der Datei ZipInputStream
aber das hat bei mir nicht funktioniert. Es schien, dass alle gelesenen Bytes 0 waren.
Gibt es eine Möglichkeit, dieses Problem zu umgehen, oder muss ich die Zip-Dateien zurück in das Kernprojekt verschieben?