2012-10-29 11 views
7

I (bir FTP sunucusundan alınan) bir dosya halletmek çalışıyorum:Sıkıştırılmış dosya zip İstisna: geçersiz giriş boyutu (193144 beklenen ancak 193.138 bayt var)

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

Ben sadece bir metin dosyası var. sıkıştırılmış dosya. Bu kod yerel windows makinemde iyi çalışıyor. Ancak, ubuntu sunucu üzerine konuşlandırılmış zaman, com.empress.Xsync.updater.ClientConfiguration.unZipFile (ClientConfiguration.java:246) aşağıdaki istisna ..

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) 

ben elle sıkıştırması var atar ..iyi çalışıyor. Orijinal .txt dosya boyutu 193144 bayttır.

+0

Muhtemelen sorunla ilgisi yoktur, ancak 'InputStream.read (...) 'EOF'de -1 değerini döndürür ve geri dönebilir 0 'bir hata olmaksızın,'> = 0' veya '! = -1' değil'> 0' için kontrol etmelisiniz. –

+0

Çok denedim .. Sorunu çözmedim! – simpleJack

cevap

9

Bu, zip dosyanızın Ubuntu makinesine aktarma işleminde bozulduğu anlaşılıyor. Aynı dosyayı problemleri de rapor edip edemediğini görmek için Ubuntu'daki komut satırından aynı dosyayı açmayı deneyin.

Eğer rastgele bir tahminde bulunacak olsaydım, ZIP dosyasını FTP ile aktarmış olmanız ve 'ikili' mod yerine 'ascii' modunu kullanmanız gerekirdi. (FTP, '\r\n''\n''u altı kez dönüştürmüş olabilir ...)

+0

Bullseye! Çok teşekkür ederim Stephan .. Bu çok yardımcı oldu .. – simpleJack