Низкая производительность утилит распаковки Java

Я заметил, что функция распаковки в Java очень медленная по сравнению с использованием нативного инструмента, такого как WinZip.

Существует ли сторонняя библиотека для Java, которая более эффективна? Открытый исходный код является предпочтительным.

редактировать

Вот сравнение скорости с использованием встроенного решения Java против 7zip. Я добавил буферизованные потоки ввода / вывода в свое оригинальное решение (спасибо, Джим, это имело большое значение).

Zip Размер файла: 800K Java Решение: 2,7 секунды 7Zip решение: 204 мс

Вот модифицированный код, использующий встроенную декомпрессию Java:

/** Unpacks the give zip file using the built in Java facilities for unzip. */
@SuppressWarnings("unchecked")
public final static void unpack(File zipFile, File rootDir) throws IOException
{
  ZipFile zip = new ZipFile(zipFile);
  Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zip.entries();
  while(entries.hasMoreElements()) {
    ZipEntry entry = entries.nextElement();
    java.io.File f = new java.io.File(rootDir, entry.getName());
    if (entry.isDirectory()) { // if its a directory, create it
      continue;
    }

    if (!f.exists()) {
      f.getParentFile().mkdirs();
      f.createNewFile();
    }

    BufferedInputStream bis = new BufferedInputStream(zip.getInputStream(entry)); // get the input stream
    BufferedOutputStream bos = new BufferedOutputStream(new java.io.FileOutputStream(f));
    while (bis.available() > 0) {  // write contents of 'is' to 'fos'
      bos.write(bis.read());
    }
    bos.close();
    bis.close();
  }
}

Ответы на вопрос(3)

Ваш ответ на вопрос