Die entpackten Zip-Datei Exception: invalid entry size (voraussichtlich 193144 bekam aber 193138 bytes)
Ich versuche zu entpacken einer Datei (abgerufen von einem FTP-server):
ZipInputStream zis = new ZipInputStream(
new FileInputStream(zipFile));
ZipEntry ze = zis.getNextEntry();
while (ze != null) {
String fileName = ze.getName();
File newFile = new File(outputFileName+outputFolder + File.separator + fileName);
System.out.println("file unzip : " + newFile.getAbsoluteFile());
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
sendFile = newFile;
ze = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
System.out.println("Done");
Ich habe nur eine text Datei in der .zip-Datei. Dieser code funktioniert auf meinem lokalen windows-Rechner. Jedoch, wenn Sie eingesetzt werden, auf der ubuntu-server ist, wird die folgende Ausnahme..
java.util.zip.ZipException: invalid entry size (expected 193144 but got 193138 bytes)
at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:386)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:156)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
unter com.Kaiserin.Xsync.updater.ClientConfiguration.unZipFile(ClientConfiguration.java:246)
Habe ich manuell entpackt..es funktioniert einwandfrei.
Original .txt-Datei-Größe ist 193144 bytes.
- Es hat wahrscheinlich nichts mit dem problem zu tun, aber
InputStream.read(...)
zurück-1
an-und EOF zurückgeben kann0
ohne dass es zu einem Fehler, so dass Sie überprüfen sollten, für>= 0
oder!= -1
, nicht> 0
. - Versucht das auch.. Hat das problem nicht lösen!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie deine zip Datei ist beschädigt in den Prozess der übertragung auf die Ubuntu-Maschine. Versuchen entpacken der gleichen Datei von der Befehlszeile aus auf den Ubuntu-Rechner, um zu sehen, ob es auch Berichte von Problemen.
Wenn ich eine zufällige vermute, es würde sein, dass Sie übertragen Sie die ZIP-Datei via FTP und benutzt "ascii" - Modus anstelle von Binär-Modus'. (FTP hätte umgewandelt
'\r\n'
zu'\n'
sechs mal ...)