解压缩过程适用于一个拉链而不是另一个拉链?

时间:2011-09-28 21:08:16

标签: java android unzip

我一直在努力理解为什么我的代码不能在拉链上工作而在另一个代码上不起作用 THIS拉链解压缩,THIS压缩不会 这是我使用的代码:

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 :(得分:0)

这是实际错误:

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文件的人可能也不知道腐败,当你告诉他们,他们都会像,“但事实并非如此,请看......它在[在这里插入破碎的应用程序]中打开。”