Распаковка с помощью 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)
любой намек?