Наткнулся на баг с русскими именами файлов при чтении из ZIP
архива при помощи java.util.zip
Помню что баг есть, помню, что где-то обсуждалось — не помню
как лечить. Вроде предлагалось какое-то лекарство в виде
аналогичной библиотеки или еще что-то.
Напомните pls. Поиск в интернете дает слишком много решений,
что брать?
--
WBR Денис Цыплаков /* ICQ UIN : 108477017 */
Знающий не говорит, говорящий не знает
Здравствуйте, Денис Цыплаков, Вы писали:
ДЦ> Наткнулся на баг с русскими именами файлов при чтении из ZIP ДЦ> архива при помощи java.util.zip
ДЦ> Помню что баг есть, помню, что где-то обсуждалось — не помню ДЦ> как лечить. Вроде предлагалось какое-то лекарство в виде ДЦ> аналогичной библиотеки или еще что-то.
Blazkowicz пишет:
> ДЦ> Помню что баг есть, помню, что где-то обсуждалось — не помню > ДЦ> как лечить. Вроде предлагалось какое-то лекарство в виде > ДЦ> аналогичной библиотеки или еще что-то. > > Оно? <http://sql.ru/forum/actualthread.aspx?tid=303484>
Нет. Это я находил, но не оно. Там проблема при чтении.
while (files.hasMoreElements())
{
ZipEntry entry = files.nextElement();
InputStream zis = zip.getInputStream(entry);
//Так вот если есть русские буквы, то zis == null
}
Если название файла английское — то все ОК. Проверял. Если буквы
русские — засада. Явно не та кодировка. Вот только не знаю как
сделать ту. Я бы имя перекодировал — но вот беда нет там метода
setName. Можно конечно новую entry создать, но не уверен, что
сработает. Если никто ничего не посоветует — завтра буду пробовать.
--
WBR Денис Цыплаков /* ICQ UIN : 108477017 */
Знающий не говорит, говорящий не знает
При распаковке ZipFile и ZipEntry тоже из org.apache.tools.zip? В апачевском
варианте у ZipFile есть конструктор с кодировкой и метод getEncoding(), а вместо
метода entries() — getEntries().
Denis Popov пишет:
> При распаковке ZipFile и ZipEntry тоже из org.apache.tools.zip? В > апачевском > варианте у ZipFile есть конструктор с кодировкой и метод getEncoding(), > а вместо > метода entries() — getEntries().
А вот скажите мне Апачевчский org.apache.tools.zip есть как отдельная
библиотека? Commons-Compress — это оно или не совсем.
А то я нашел как часть HiveMind но это как бы не совсем то.
--
WBR Денис Цыплаков /* ICQ UIN : 108477017 */
Знающий не говорит, говорящий не знает
Там все больше про создание. Мне надо читать. Я нашел workAround —
кусок кода заменяющий русские буквы в именах файлов на транслит.
Но мня это не устраивает. Мне надо оставить архив как есть.
Возьму наверное библиотеку от Jakarta.
--
WBR Денис Цыплаков /* ICQ UIN : 108477017 */
Знающий не говорит, говорящий не знает
Денис Цыплаков пишет:
> А вот скажите мне Апачевчский org.apache.tools.zip есть как отдельная > библиотека? Commons-Compress — это оно или не совсем. > > А то я нашел как часть HiveMind но это как бы не совсем то.
Сам себе отвечаю. HiveMind тут ни при чем.
Отодрал (в хорошем смысле) реализацию zip от ant-a (как все делают)
получил jar такой вот структуры.
[text]
org
+---apache
+---tools
+---zip
AsiExtraField.class
ExtraFieldUtils.class
UnixStat.class
UnrecognizedExtraField.class
ZipEntry.class
ZipExtraField.class
ZipFile$BoundedInputStream.class
ZipFile.class
ZipLong.class
ZipOutputStream.class
ZipShort.class
[/text]
Вроде все работает.
--
WBR Денис Цыплаков /* ICQ UIN : 108477017 */
Знающий не говорит, говорящий не знает