Распаковка с помощью ZipInputStream и IoUtils.copyStream() freeze

Я пытаюсь разархивировать файл (30 Мб) программно, это мой скрипт

public void unzip() {

        dirChecker(location);

        try {
            FileInputStream fin = new FileInputStream(zipFile);
            ZipInputStream zin = new ZipInputStream(fin);
            ZipEntry ze = null;
            while ((ze = zin.getNextEntry()) != null) {
                Log.v("Decompress", "Unzipping " + location+ze.getName());
                //create dir if required while unzipping
                if (ze.isDirectory()) {
                    dirChecker(ze.getName());
                } else {
                    FileOutputStream fout = new FileOutputStream(location + ze.getName());

                    IoUtils.copyStream(zin, fout);

                    zin.closeEntry();
                    fout.close();
                }

            }
            zin.close();
        } catch (Exception e) {
            System.out.println(e);
        }
}



private void dirChecker(String dir) {
    File f = new File(location + dir);

    if (!f.isDirectory()) {
        f.mkdirs();
    }
}

распаковка идет хорошо, пока 24-й файл в zip-файле не зависает, не сообщая об ошибке, просто остановитесь в строке:

 IoUtils.copyStream(zin, fout);

нет журнала, нет исключений, ничего... я обнаружил, что правильная строка ставит точку останова после попытки и вручную перебирает до тех пор, пока не появится 24-й файл (это 1.1mb jpg, у меня не было проблем с извлечением с помощью winzip)

любой намек?

0 ответов

Другие вопросы по тегам