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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ящюр
97 / 97 / 24
Регистрация: 15.03.2013
Сообщений: 520
Записей в блоге: 1
#1

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

03.02.2014, 01:54. Просмотров 1017. Ответов 5
Метки нет (Все метки)

Подскажите плиз, как получить список файлов в архиве и извлеч только нужные мне файлы в папку. Перебрал кучу примеров из инета для работы с архивами и только ошибки. Последний тестовый пример
Кликните здесь для просмотра всего текста
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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2014, 01:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как получить список файлов в архиве и извлечь только нужные (Программирование Android):

Получить список файлов с HTTP-сервера - Программирование Android
Интересует получение списка файлов без вспомогательных серверных скриптов php и пр. Я подозреваю, что скорее всего это невозможно из...

Не удается получить список файлов на хостинге ftp - Программирование Android
Взгляните на код, пожалуйста: FTPClient ftc = new FTPClient(); try { ...

Получить список файлов сервера указав путь - Программирование Android
Есть сервер на java рабочий. Принимает запросы от клиента и выводит список txt файлов прописанного в путе диска, затем по введенному...

Необходима библиотека, которая позволяет получить список файлов в ZIP-архиве - C#
Добрый день, господа форумчане Необходима библиотека, которая позволяет получить список файлов в ZIP-архиве, а также извлечь из него...

Как получить список только n файлов из папки - C# WPF
Как в listbox получить список n файлов из указанной папки. Например, в папке 500 файлов, а нужно только 10 любых (а как можно последних...

Как получить из JSON только нужные параметры? - C#
Проблема в том, что сервис выдает JSON не в читабельном формате, без переноса строк и т.д (пример ниже),а просто сплошной строкой, поэтому...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 426
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() - пользовательская ф-я проверки существования файла
1
ящюр
97 / 97 / 24
Регистрация: 15.03.2013
Сообщений: 520
Записей в блоге: 1
07.02.2014, 14:40  [ТС] #3
Все равно ничего не получается. Вылетает Bad byte at 0 и все тут.

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

Получить список только текстовых файлов в указанной директории - C Linux
Уважаемые форумчане, нужна помощь. Как получить список только текстовых файлов в указанной директории? Как получить список файлов ясно, а...

Получить имя файла и размер файлов в архиве из строки - C#
Доброго времени суток помогите пожалуйста разобраться. Мне необходимо с помощью 7zip работать с архивами, а именно получить имя файла и...

Как извлечь из строки нужные символы - C#
Столкнулся с такой проблемой: Пользователь вводит строку в формате БукваЦифра (без пробелов) и нужно поместить букву в одну переменную, а...

как получить список директорий и список файлов в директории - Visual Basic
Очень нужно организовать поиск на диске. Как искать в нутри файла я знаю, а вот как искать вовсех файлах на диске и в поддиректориях незная


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.02.2014, 11:39
Ответ Создать тему
Опции темы

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