Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / java zip entry / 7 сообщений из 7, страница 1 из 1
30.11.2012, 10:56:46
    #38059354
qwerty2012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java zip entry
как в зип добавить файлы из 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
04.12.2012, 18:12:32
    #38064844
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java zip entry
Так и есть. Следует только учесть, что стандартный 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
04.12.2012, 18:40:41
    #38064888
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java zip entry
Я делал замену Unicode символов на $XXXX во всех маршрутах zip архива
при архивации и соотв. наоборот заменял при распаковке. Символ '$' соотв
тоже заменял на $<код_его>.

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

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


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