2012-10-29 7 views
7

próbuję rozpakować plik (pobierane z serwera FTP):rozpakować Wyjątek Zip: nieprawidłowy rozmiar wejście (oczekiwano 193144 ale dostał 193138 bajtów)

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

mam tylko jeden plik tekstowy w. plik zip. Ten kod działa dobrze na moim lokalnym komputerze z systemem Windows. Jednakże, gdy stosowane na serwerze ubuntu generuje następujące wyjątki ..

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) 

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

I ręcznie rozpakowany go ..działa w porządku. Oryginalny rozmiar pliku .txt wynosi 193144 bajtów.

+0

Prawdopodobnie nie ma to nic wspólnego z problemem, ale 'InputStream.read (...)' zwraca '-1' w EOF i może zwrócić' 0 'bez błędu, więc powinieneś sprawdzić'> = 0' lub '! = -1', a nie'> 0'. –

+0

Wypróbowałem to też .. Nie rozwiązałem problemu !! – simpleJack

Odpowiedz

9

Wygląda na to, że plik zip został uszkodzony podczas przesyłania go do komputera z systemem Ubuntu. Spróbuj rozpakować ten sam plik z wiersza poleceń na komputerze Ubuntu, aby sprawdzić, czy raportuje również problemy.

Jeśli miałbym dokonać losowego zgadywania, to znaczy, że przeniosłeś plik ZIP przez FTP i używałeś trybu "ascii" zamiast trybu "binarnego". (FTP mógł konwertować '\r\n' do '\n' sześć razy ...)

+0

Bullseye! Dziękuję bardzo Stephan .. To bardzo pomogło .. – simpleJack

Powiązane problemy