Android: получить количество файлов в ZIP-архиве?

У меня есть вопрос, который кажется простым, но я не могу заставить его работать должным образом.

У меня есть zip-файл в папке «assets», который мне нужно разархивировать, и у меня есть ProgessBar , в котором я хочу показать пользователю, как идет прогресс.

У меня есть все работает, но я хочу установить максимальное значение ProgessBar , равное количеству файлов в zip-файле.Количество файлов в этой папке иногда будет меняться, поэтому я хочу, чтобы ProgessBar соответствовал количеству файлов, содержащихся в zip-архиве.

Я использую ZipInputStream - API, но, похоже, нет способа получить количество файлов в zip-файле. Единственный способ, который я могу придумать, - это сделать следующее:

   ZipInputStream zin = new ZipInputStream(getAssets().open(
                                "myFile.zip"));
   int numFiles = 0;
   int increment = 0;
   while (zin.getNextEntry() != null) {
     numFiles++;
    }

    ZipEntry ze = null;
    //Set the Max..value here..
    progessBar.setMax(numFiles);                
    while ((ze = zin.getNextEntry()) != null) {
       increment++;
       progessBar.setProgress(increment);
    }

Это работает, но наличие двух циклов while кажется немного избыточным, которые в основном делают то же самое.

Я знаю, что существует ZipFile -API, который имеет метод size () , но для него требуется путь к файлу, и поскольку мой файл находится в папке «assets», я уверен, что единственный способ читать из этого каталога - посредством потоковой передачи.

Есть ли у меня способ добиться этого?

9
задан Lukas Knuth 22 July 2011 в 21:14
поделиться