Форум программистов, компьютерный форум CyberForum.ru

Как получить список файлов в архиве и извлечь только нужные - Android

Восстановить пароль Регистрация
 
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 505
Записей в блоге: 1
03.02.2014, 01:54     Как получить список файлов в архиве и извлечь только нужные #1
Подскажите плиз, как получить список файлов в архиве и извлеч только нужные мне файлы в папку. Перебрал кучу примеров из инета для работы с архивами и только ошибки. Последний тестовый пример
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public void unzipping () {
        try
        {
           /*
                * To Open a zip file, use
                *
                * ZipFile(String fileName)
                * constructor of the ZipFile class.
                *
                * This constructor throws IOException for any I/O error.
                */
            File file = new File (getFilesDir() +"/jtv.zip");
            Log.i(TAG,"Control Point n1");
            ZipInputStream zipinputstream = null;
 
            ZipEntry zipentry;
 
            zipinputstream = new ZipInputStream(new FileInputStream(file));
 
 
 
            zipentry = zipinputstream.getNextEntry();
 
           
           Log.i(TAG,"Control Point n2");
           
           /*
            * To get list of entries in the zip file, use
            *
            * Enumeration entries()
            * method of ZipFile class.
            */
           
            //Enumeration e = zipFile.entries();
           
            Log.i(TAG,"Listing zip file contents");
            while(zipentry != null)
            {
                String entryName = zipentry.getName();
                Log.i(TAG,"List - "+ entryName);
                zipentry = zipinputstream.getNextEntry();
            }
           
        }
        catch(IOException ioe)
        {
            Log.i(TAG,"Error opening zip file" + ioe);
        }
 
}
}


В результате в списке имею один файл из 816 (причем не самый первый )
Архив это список каналов jtv.zip
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2014, 01:54     Как получить список файлов в архиве и извлечь только нужные
Посмотрите здесь:

Список файлов Android
Поиск файла на внешних устройствах или как получить список всех смонтированных носителей Android
Android Получить список файлов с HTTP-сервера
Получить полный список контактов Android
Как получить из списка адресов только город? Android
Android Как получить список сообщений вконтакте?
Android Как загрузить на Ftp сервер список файлов?
Как извлечь данные из андроид-приложения (wifi analyzer)? Android
Android Список файлов в корневой директории
Android Не удается получить список файлов на хостинге ftp
Android Как извлечь записи из базы данных Oracle в android
Android Получить список файлов сервера указав путь

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 414
03.02.2014, 10:43     Как получить список файлов в архиве и извлечь только нужные #2
Теперь наверное я бы немного грамотнее придумал, но я делал так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
    public static boolean decompressFromZip(String Dir, String ZipFile_ShortName, ArrayList<String> extractFiles) {
 
        final int BUFFER = 512;
        final int TOOBIG = 0x6400000; // max size of unzipped data, 100MB
        final int TOOMANY = 1024; // max number of files
 
        final String ZipFile_LongName = Dir + "/" + ZipFile_ShortName;
 
        if (getFile(Dir, ZipFile_ShortName) == null)
            return false;
 
        try {
            FileInputStream fis = new FileInputStream(ZipFile_LongName);
            ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
            ZipEntry entry;
            int entries = 0;
            int total = 0;
            try {
                while ((entry = zis.getNextEntry()) != null) {
 
                    if (extractFiles != null && !extractFiles.contains(entry.getName())) {
                        continue;
                    }
 
                    int count;
                    byte data[] = new byte[BUFFER];
 
                    String name = Utils.validateFilename(entry.getName(), ".");
                    FileOutputStream fos = new FileOutputStream(Dir + "/" + name);
 
                    BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
                    while (total <= TOOBIG && (count = zis.read(data, 0, BUFFER)) != -1) {
                        dest.write(data, 0, count);
                        total += count;
                    }
                    dest.flush();
                    dest.close();
                    zis.closeEntry();
                    entries++;
                    if (entries > TOOMANY) {
                        throw new IllegalStateException("Too many files to unzip.");
                    }
                    if (total > TOOBIG) {
                        throw new IllegalStateException("File being unzipped is too big.");
                    }
                }
            } finally {
                zis.close();
            }
 
        } catch (Exception e) {
        }
 
        return true;
    }
Параметры:
1 - путь к архиву без имени файла
2 - имя файла архива
3 - список файлов для распаковки

getFile() - пользовательская ф-я проверки существования файла
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 505
Записей в блоге: 1
07.02.2014, 14:40  [ТС]     Как получить список файлов в архиве и извлечь только нужные #3
Все равно ничего не получается. Вылетает Bad byte at 0 и все тут.

Архив на винде WinRar`ом открывается без проблемм. Что может быть не так ?
Вложения
Тип файла: zip jtv.zip (1.12 Мб, 2 просмотров)
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 505
Записей в блоге: 1
07.02.2014, 16:23  [ТС]     Как получить список файлов в архиве и извлечь только нужные #4
Так... на другом архиве работает. Где-то вычитал, что java.util.zip не переваривает кирилицу. Так ли это?
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 414
07.02.2014, 21:02     Как получить список файлов в архиве и извлечь только нужные #5
Цитата Сообщение от ящюр Посмотреть сообщение
Так... на другом архиве работает. Где-то вычитал, что java.util.zip не переваривает кирилицу. Так ли это?
Я это тоже читал, но не проверял.
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 505
Записей в блоге: 1
11.02.2014, 11:39  [ТС]     Как получить список файлов в архиве и извлечь только нужные #6
Нет дела не в именах файлов. Имена я поменял, но результат тотже.
Вот почему я и нелюблю особо андроид. В который раз убеждаюсь, что многие вещи работают через большое Ж. Ссори за оффтоп.
Yandex
Объявления
11.02.2014, 11:39     Как получить список файлов в архиве и извлечь только нужные
Ответ Создать тему
Опции темы

Текущее время: 15:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru