powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разархивировать!
11 сообщений из 11, страница 1 из 1
Помогите разархивировать!
    #33839239
Vasisualiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Многие сталкивались при такой попытке разархивировать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 byte [] file = .......
BufferedOutputStream bos =  null ;
ByteArrayInputStream bais =  new  ByteArrayInputStream(file);
ZipInputStream zis =  new  ZipInputStream(bais);
 int  count;
 byte  data[] =  new   byte [BUFFER_SIZE];
ZipEntry ze;

 while  ((ze = zis.getNextEntry()) !=  null ) {
    ze = zis.getNextEntry();
     if  (!(ze.isDirectory())) {
        String zeName = ze.getName();
        String destFN = path + zeName;
        FileOutputStream fos =  new  FileOutputStream(destFN);
        bos =  new  BufferedOutputStream(fos, BUFFER_SIZE);
         while ( (count = zis.read(data,  0 , BUFFER_SIZE) ) != - 1  ) {
	bos.write(data,  0 , count);
        }
        bos.flush();
        bos.close();
   }
zis.close();

и если архив содержит русские названия файлов, то выдается IllegalArgumentException. Были какие-то рекомендации использовать антовские JAR-ки, но там я не нашел ZipInputStream, а только ZipOutputStream!

Может всетаки кто-то нашел выход из этой ситуации? Это не частные случаи, когда в архиве всего один файл, файлов море и никто не знает какие у них имена.

Заранее благодарен за всевозможные подсказки и наставления на путь истинный
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33839265
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там есть ZipFile. Нужен он.
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33839326
Vasisualiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТам есть ZipFile. Нужен он.
Это конечно хорошо, но если ты заметил зип-файл приходит как byte[]

Если я буду использовать
Код: plaintext
1.
2.
3.
4.
5.
6.
ZipFile zf =  new  ZipFile("asdasas.zip");
Enumeration e = zf.entries();
 While (e.hashMoreElements) {
    ZipEntry ze = (ZipEntry) e.nextElement();   //????llegalArgumentException

}
Разве я опять не получу все тот же llegalArgumentException
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33839382
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навскидку, если нельзя прочитать массив в ZipFile, то можно сперва сбросить этот массив файлом на диск и читать уже оттуда. При создании ZipFile указывай кодировку.

Код: plaintext
1.
2.
//ZipFile zf = new ZipFile("asdasas.zip");
ZipFile zf =  new  ZipFile("asdasas.zip", "Cp866");
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33839421
Vasisualiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Denis Popov
авторесли нельзя прочитать массив в ZipFile, то можно сперва сбросить этот массив файлом на диск и читать уже оттуда
Именно так и решил действовать
Код: plaintext
ZipFile zf =  new  ZipFile("asdasas.zip", "Cp866");
"Cp866" - что это за кодировка и какие есть еще?
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33839431
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasisualiy
"Cp866" - что это за кодировка и какие есть еще?
http://wdh.suncloud.ru/charsets.htm
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33839439
Vasisualiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Denis Popov
Спасибо! Теперь поднажму и сделаю сейчас все как надо
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33841626
Vasisualiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis PopovПри создании ZipFile указывай кодировку.

Код: plaintext
1.
ZipFile zf =  new  ZipFile("asdasas.zip", "Cp866");


ZipFile не поддерживает указание кодировки!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ZipFile zf =  new  ZipFile(fileName);
Enumeration e = zf.entries();
 while  (e.hasMoreElements()){
    ZipEntry ze = (ZipEntry)e.nextElement();
     if  (ze.isDirectory()) {
	( new  File(path + ze.getName())).mkdir();
	 continue ;
    }
    InputStream is = zf.getInputStream(ze);
     byte  data[] =  new   byte [BUFFER_SIZE];
     int  len;
    BufferedOutputStream bos =  new  BufferedOutputStream( new  FileOutputStream(path + ze.getName()));
     while  ((len = is.read(data)) >=  0 ) {
	bos.write(data,  0 , len);
    }
    is.close();
    bos.close();
}
zf.close();

И если в
Код: plaintext
InputStream is = zf.getInputStream(ze);
ze.getName содержит русское имя то не создается InputStream (is = null). Как это можно обойти или что я не так сделал?
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33841667
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasisualiy Denis PopovПри создании ZipFile указывай кодировку.

Код: plaintext
1.
ZipFile zf =  new  ZipFile("asdasas.zip", "Cp866");


ZipFile не поддерживает указание кодировки!

Код: plaintext
org.apache.tools.zip.ZipFile
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33841933
Vasisualiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
org.apache.tools.zip
не содержит ZipFile
...
Рейтинг: 0 / 0
Помогите разархивировать!
    #33841961
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasisualiy wrote:
> org.apache.tools.zip
>
> не содержит ZipFile

Скачай Ant отсюда: http://ant.apache.org/bindownload.cgi Файл ant.jar в
дистрибутиве содержит класс org.apache.tools.zip.ZipFile.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разархивировать!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]