powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Как прочитать *.zip файл в массив байт
12 сообщений из 12, страница 1 из 1
Как прочитать *.zip файл в массив байт
    #39806382
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь прочитать zip файл, пока безуспешно.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
File zipFile = new File("pathToZip");
Path path   = zipFile.toPath();
InputStream input = new BufferedInputStream(Files.newInputStream(path));

InputStream in = new ZipInputStream(input);

byte[] buffer = new byte[1024];

while (in.read(buffer) != -1) {}



read возвращает -1, хотя файл не пустой.
Что я делаю не так?
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806384
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там не так. Зип архив состоит из файликов. И их получают через ZipEntry. Посмотри примеры их полно.
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806393
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

https://stackoverflow.com/questions/14603319/getinputstream-for-a-zipentry-from-zipinputstream-without-using-the-zipfile-cla


авторErr, the ZipInputStream already is an InputStream. You don't need another one. Getting the next ZipEntry positions the stream at the beginning of the entry. See the Javadoc.

Почему то пишут, что и с ZipInputStream должно быть ок. Может я конечно не правильно понимаю.
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806396
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Код: java
1.
2.
3.
4.
5.
while ((in.getNextEntry()) != null) {
    byte[] buffer = new byte[1024];

    while (in.read(buffer) != -1) {}
}



Так вроде заработало.
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806397
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, спасибо.
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtus,

Да. А вот если-бы ты использовал GZip - то там связь архива и архивируемого потока была-бы 1:1.
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806424
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
File zipFile = new File("pathToZip");
Path path   = zipFile.toPath();
InputStream input = new BufferedInputStream(Files.newInputStream(path));

byte[] buffer = new byte[1024];

while (in.read(buffer) != -1) {}



Так тоже заполняет буфер, но содержимое буфера отличается если писать так

Код: java
1.
2.
3.
4.
5.
6.
InputStream in = new ZipInputStream(input);
while ((in.getNextEntry()) != null) {
    byte[] buffer = new byte[1024];

    while (in.read(buffer) != -1) {}
}



?
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806426
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется что ты теряешь ZipEntry. Этож шаблон итератора и с ним надо работать аккуратно.

Смотри как тут https://metanit.com/java/tutorial/6.12.php
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806437
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

говорят zip файл содержит еще метаданные. Поэтому если читать без ZipEntry, то есть вероятность что читаешь сначала как раз их, а не содержимое самих entries. Поэтому возможно содержание массивов различается.
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806450
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понимаю о чем-ты. Посмотри поля ZipEntry. Size. Compressed Size. CRC. Это и есть метаданные.

Или ты имел в виду что-то другое.
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806457
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ну да. Только если не использовать ZipInputStream, а читать просто как

Код: java
1.
2.
3.
4.
5.
InputStream input = new BufferedInputStream(Files.newInputStream(path));

byte[] buffer = new byte[1024];

while (in.read(buffer) != -1) {}



то как раз и выходит, что

авторПосмотри поля ZipEntry. Size. Compressed Size. CRC попадают в мой буффер. А мне они не нужны. Мне нужны только "пользовательские данные запакованные".
...
Рейтинг: 0 / 0
Как прочитать *.zip файл в массив байт
    #39806459
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

да, имел в виду это. Не точно выразился. Спасибо.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как прочитать *.zip файл в массив байт
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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