Процесс распаковки работает на одном почтовом индексе, а на другом - нет? - PullRequest
1 голос
/ 29 сентября 2011

Я пытался понять, почему мой код не работает на zip и не работает на другом ..
THIS zip распаковывается, а THIS zip isntкод, который я использую:

String zipFile = Path + FileName;


            FileInputStream fin = new FileInputStream(zipFile);
            ZipInputStream zin = new ZipInputStream(fin);

            ZipEntry ze = null;
            while ((ze = zin.getNextEntry()) != null) {
                UnzipCounter++;
                if (ze.isDirectory()) {
                    dirChecker(ze.getName());
                } else {
                    FileOutputStream fout = new FileOutputStream(Path
                            + ze.getName());
                    while ((Unziplength = zin.read(Unzipbuffer)) > 0) {
                        fout.write(Unzipbuffer, 0, Unziplength);                    
                    }
                    zin.closeEntry();
                    fout.close();

                }

            }
            zin.close();

Может кто-нибудь сказать мне, почему?

zip не работает означает, что когда он достигает строки "while ((ze = zin.getNextEntry ())! = Null) {" .. ze всегда равен нулю, поэтому он не входит в цикл, поэтому он неизвлечь что-нибудь .. Я могу открыть + разархивировать оба файла с WinRar ..

1 Ответ

0 голосов
/ 29 сентября 2011

Вот фактическая ошибка:

java.io.EOFException
    at java.io.RandomAccessFile.readFully(RandomAccessFile.java:383)
    at gnu.java.util.zip.ZipFile$PartialInputStream.fillBuffer(ZipFile.java:647)

Похоже, ваш zip-файл поврежден.WinRAR имеет тенденцию игнорировать некоторые виды коррупции.

Это моя личная проблема - я считаю, что было бы лучше, если бы инструменты не делали такого рода вещи, потому что это означает, что тот, кто создал zip-файл, вероятнотакже не знает о коррупции, и когда вы скажете им, они все будут похожи, "но это не так, смотрите ... он открывается в [вставить сломанное приложение здесь]."

...