La décompression du fichier Zip Exception: entrée non valide taille (prévu 193144, mais il a obtenu 193138 octets)

Je suis en train de décompresser un fichier (récupérées à partir d'un serveur FTP):

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");

Je n'ai qu'un fichier texte dans le .fichier zip. Ce code fonctionne très bien sur mon windows local de la machine. Toutefois, lorsqu'il est déployé sur le serveur ubuntu, il lève l'exception suivante..

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)

au com.l'impératrice.Xsync.programme de mise à jour.ClientConfiguration.unZipFile(ClientConfiguration.java:246)

J'ai manuellement décompressé..fonctionne très bien.
D'origine .txt taille du fichier est 193144 octets.

Il n'a probablement rien à voir avec le problème, mais InputStream.read(...) retourne -1 à EOF et peut retourner 0 sans qu'il y ait une erreur, de sorte que vous devriez vérifier pour >= 0 ou != -1, pas > 0.
Essayé aussi.. n'A pas résolu le problème!!!!!

OriginalL'auteur simpleJack | 2012-10-29