У меня большое количество (говорит 1000) застежек с переменным размером (говорит от 4k до 400k), запись для zip. Мне удается распаковать все классическим способом, но производительность на самом деле не удовлетворяет... Знаете ли вы по-другому, nio или native, что могло бы помочь улучшить производительность?
заранее спасибо.
извините.. я забыл написать код :)
zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(f)));
while ((zentry = zis.getNextEntry()) != null) {
zentryName = zentry.getName();
File unzippedFile = new File(staging, zentryName);
BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(unzippedFile));
byte buffer[] = new byte[32768];
while ((read = zis.read(buffer, 0, 32768)) > 0) {
fos.write(buffer, 0, read);
}
f.delete();
fos.flush();
fos.close();
zis.closeEntry();
}
zis.close();
Ваш код выглядит хорошо....
Распаковка на Android будет медленной. Это и относительно низкая скорость процессора (для таких операций ARM хуже, чем x86) и скорости интерфейса SD Card (помните, что вы оба читаете.zip и записываете распакованные данные с использованием той же относительно низкоскоростной файловой системы) - несжатые данные могут быть в несколько раз больше, чем сжатые данные, поэтому мы говорим о довольно большом количестве записей.
Есть несколько вещей, которые вы можете сделать, хотя обход этого: