2012-10-29 3 views
7

Sto cercando di decomprimere un file (recuperato da un server FTP):Unzipping Eccezione file Zip: dimensioni voce non valida (expected 193144 ma ha ottenuto 193138 byte)

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

ho solo un file di testo nella. file zip. Questo codice funziona correttamente sulla mia macchina Windows locale. Tuttavia, quando distribuito sul server di ubuntu, viene generata l'eccezione seguente ..

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) 

a com.empress.Xsync.updater.ClientConfiguration.unZipFile (ClientConfiguration.java:246)

ho manualmente decompresso ..funziona bene. La dimensione del file .txt originale è 193144 byte.

+0

Probabilmente non ha nulla a che fare con il problema, ma 'InputStream.read (...)' restituisce '-1' a EOF e può tornare' 0 'senza che ci sia un errore, quindi dovresti controllare'> = 0' o '! = -1', non'> 0'. –

+0

Ho provato anche questo .. Non ho risolto il problema !! – simpleJack

risposta

9

Sembra che il file zip sia stato danneggiato durante il processo di trasferimento alla macchina Ubuntu. Prova a decomprimere lo stesso file dalla riga di comando sulla macchina Ubuntu per vedere se segnala anche problemi.

Se dovessi fare un'ipotesi casuale, sarebbe che hai trasferito il file ZIP via FTP e usato la modalità 'ascii' invece della modalità 'binaria'. (FTP avrebbe potuto convertito '\r\n' a '\n' sei volte ...)

+0

Bullseye! Grazie mille Stephan ... Questo ha aiutato molto .. – simpleJack