Распаковка файлов с большим количеством маленьких файлов внутри - PullRequest
0 голосов
/ 19 октября 2011

У меня много архивов с большим количеством файлов, которые я должен распаковать на SD-карту.

В настоящее время я использую пакет util.zip с Zipentry для каждого файла внутри почтовых индексов. Это работает нормально, но очень медленно.

Так что мне интересно, есть ли библиотека, которая может обрабатывать эти файлы быстрее, чем обычный zip-файл Java / Android.

Редактировать: zip-архивы - это архивы размером от 5 до 10 МБ, содержащие от 50 до 100 файлов jpg, каждая из которых является частью изображения. Мне нужно извлечь все почтовые индексы в определенную папку. Медленный означает, что те же файлы извлекаются на IPhone в доли времени.

Редактировать 2 код:

ZipInputStream zin = new ZipInputStream(fd);
    ZipEntry ze = null;
    while ((ze = zin.getNextEntry()) != null) {
    System.out.println("Unzipping " + ze.getName());

    if (ze.isDirectory()) {
        File f = new File(targetFilePath + ze.getName());

        if (!f.isDirectory()) {
        f.mkdirs();
        }
    } else {
        int size;
        byte[] buffer = new byte[2048];

        FileOutputStream outStream = new FileOutputStream(targetFilePath + ze.getName() + ".tile");
        BufferedOutputStream bufferOut = new BufferedOutputStream(outStream, buffer.length);

        while ((size = zin.read(buffer, 0, buffer.length)) != -1) {
        bufferOut.write(buffer, 0, size);
        }

        bufferOut.flush();
        bufferOut.close();
    }
    }
    zin.close();

1 Ответ

1 голос
/ 20 октября 2011

Лучший случай, который вы могли бы сделать, это пойти NDK путь. AFAIK, Google даже предоставляет поддерживаемые заголовки / API в NDK на zlib.

...