powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / java zip entry
7 сообщений из 7, страница 1 из 1
java zip entry
    #38059354
qwerty2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как в зип добавить файлы из inputstream физически эти файлы не создавались.
я делаю примерно так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
       
    public static void zip(InputStream inputStream, String entryName, ZipOutputStream outputStream) throws IOException {
        outputStream.putNextEntry(new ZipEntry(entryName));
        int bufferLength = 1024 * 1024;
        byte[] buffer = new byte[bufferLength];
        int readed = inputStream.read(buffer, 0, bufferLength);
        while (readed != -1) {
            outputStream.write(buffer, 0, readed);
            readed = inputStream.read(buffer, 0, bufferLength);
        }
        outputStream.flush();
    }
...
OutputStream outresp = response.getOutputStream();
ZipOutputStream opzStream = new ZipOutputStream(outresp );
InputStream  istmp = new ByteArrayInputStream(out.toByteArray());
zip(istmp, "тут произвольное имя пишу", opzStream);
...
Рейтинг: 0 / 0
java zip entry
    #38064844
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и есть. Следует только учесть, что стандартный ZipOutputStream не поддерживает 866 кодировку, используемую winrar и прочими отечественными архиваторами. Поэтому если нужны файлы с русскими именами, можно использовать, например, commons-compress (org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	ZipArchiveOutputStream out = new ZipArchiveOutputStream(os);
	out.setEncoding("Cp866");
	for (MemoryFile file:files) {
		ZipArchiveEntry ze = new ZipArchiveEntry(file.getFileName());
		ze.setComment(file.getComments());
		out.putArchiveEntry(ze);
		readFileBody(file, out);// in->out
		out.closeArchiveEntry();
	}
	out.close();
...
Рейтинг: 0 / 0
java zip entry
    #38064888
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делал замену Unicode символов на $XXXX во всех маршрутах zip архива
при архивации и соотв. наоборот заменял при распаковке. Символ '$' соотв
тоже заменял на $<код_его>.

Катит для архивов с небольшой глубиной. Если путь превышал какой-то лимит
то надо было еще что-то придумать.
...
Рейтинг: 0 / 0
java zip entry
    #38066811
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почемы бы просто не "закатать имя в utf8"? По разному, но архиваторы его понимают.
...
Рейтинг: 0 / 0
java zip entry
    #38066848
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хотел получать Ascii-принтабельное представление.
...
Рейтинг: 0 / 0
java zip entry
    #38066861
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ хотел получать Ascii-принтабельное представление.Прочитать utf8 через (в худшем случае):
Код: sql
1.
2.
chcp 65000
utf8-прога|clip

и "копипаст в блокнот" я могу всегда. Если повезёт - обойдусь и без clip и увижу читабельный текст в консоли.
В чём сермяжная правда именно ASCII-printable, если без раскодировки оно всё равно нечитабельно???
Где найти сейчас 7bit-only system?
...
Рейтинг: 0 / 0
java zip entry
    #38066903
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сейчас не могу вспомнить тот юзкейс но у меня были ограничения на utf. Толи
это было связано с древним WinZip толи еще с чем-то но я поборол странные
аномалии в GUI только полностью убрав всё непринтабельное.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / java zip entry
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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