Size: a a a

2020 December 07

VL

Vladimir Lykov in pro.jvm
Виктор Шиян
Всем привет. Есть такая задача скачать zip архив по урлу. Потом пройтись по всем вложенным файлам и распарсить их. Сейчас я это делаю так, с помощью рестТемплей тяну byte[], его в InputStream, далее в ZipInputStream, ну а дальше работаю с архивом. Правильно я понимаю , что я с ZipInputStream не смогу работать пока не скачается весь архив с помощью RestTemplate?
Вроде правильно) Связь ведь может оборваться и тогда zis не поймет, что получил
источник

ВШ

Виктор Шиян... in pro.jvm
Есть просто архив 2 гб, он будет очень долго качаться , а программа будет простаивать получается
источник

VL

Vladimir Lykov in pro.jvm
Виктор Шиян
Есть просто архив 2 гб, он будет очень долго качаться , а программа будет простаивать получается
Распаралель задачи
источник

VP

Vladimir Petrakovich in pro.jvm
Виктор Шиян
Всем привет. Есть такая задача скачать zip архив по урлу. Потом пройтись по всем вложенным файлам и распарсить их. Сейчас я это делаю так, с помощью рестТемплей тяну byte[], его в InputStream, далее в ZipInputStream, ну а дальше работаю с архивом. Правильно я понимаю , что я с ZipInputStream не смогу работать пока не скачается весь архив с помощью RestTemplate?
Очевидно, что byte[] вы получите только после полного скачивания
источник

ВШ

Виктор Шиян... in pro.jvm
Vladimir Lykov
Распаралель задачи
Ну парсинг каждого файла я запаралелю )))
источник

ВШ

Виктор Шиян... in pro.jvm
Vladimir Petrakovich
Очевидно, что byte[] вы получите только после полного скачивания
Спасибо. Я просто засомнивался в этом . Решил спросить у более опытных ))) Может что то подскажут
источник

AE

Alexandr Emelyanov in pro.jvm
Виктор Шиян
Спасибо. Я просто засомнивался в этом . Решил спросить у более опытных ))) Может что то подскажут
чат для тех, у кого мало опыта - @javastart
источник

A

AlexJok in pro.jvm
Кто-нибудь сталкивался с проблемой, когда в s3 льешь из CypherInputStream'a с мелкими файлами все ок, а большие файлы доезжают поврежденными?
источник

AS

Artem Sokolov in pro.jvm
Виктор Шиян
Есть просто архив 2 гб, он будет очень долго качаться , а программа будет простаивать получается
Кажется частичная распаковка архива не возможна в любом случае
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Виктор Шиян
Ну парсинг каждого файла я запаралелю )))
А файлов много, они большие?
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Если да, то лучше spring batch брать, он под такие задачи заточен
источник

ВШ

Виктор Шиян... in pro.jvm
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
А файлов много, они большие?
В архиве много маленьких по весу xml .
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Виктор Шиян
В архиве много маленьких по весу xml .
Ну, если много - это тысячи или больше, то имеет смысл посмотреть батч. Если меньше, то думаю оверхед будет больше, чем польза
источник

ВШ

Виктор Шиян... in pro.jvm
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Ну, если много - это тысячи или больше, то имеет смысл посмотреть батч. Если меньше, то думаю оверхед будет больше, чем польза
Спасибо посмотрю.
источник

VP

Vladimir Petrakovich in pro.jvm
Виктор Шиян
Всем привет. Есть такая задача скачать zip архив по урлу. Потом пройтись по всем вложенным файлам и распарсить их. Сейчас я это делаю так, с помощью рестТемплей тяну byte[], его в InputStream, далее в ZipInputStream, ну а дальше работаю с архивом. Правильно я понимаю , что я с ZipInputStream не смогу работать пока не скачается весь архив с помощью RestTemplate?
Если нужно начать обрабатывать архив до того, как он полностью скачался, или не хочется тянуть гигабайты в память, надо искать способ получить InputStream из http-клиента
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
Getting InputStream with RestTemplate
https://stackoverflow.com/q/36379835/4178124
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in pro.jvm
И вот это я бы рекомендовал посмотреть
источник

ВШ

Виктор Шиян... in pro.jvm
Спасибо.
источник

A

AlexJok in pro.jvm
Виктор Шиян
Всем привет. Есть такая задача скачать zip архив по урлу. Потом пройтись по всем вложенным файлам и распарсить их. Сейчас я это делаю так, с помощью рестТемплей тяну byte[], его в InputStream, далее в ZipInputStream, ну а дальше работаю с архивом. Правильно я понимаю , что я с ZipInputStream не смогу работать пока не скачается весь архив с помощью RestTemplate?
1) Не советую брать ZipInoutStream, наткнетесь на то что не все .zip поддерживает и могут быть проблемы с распаковкой. Посмотрите в сторону Apache Compress.
2) Весь архив вычитывать не нужно, что бы по entry бежать. Достаточно читать стрим и распечатывать его на лету
источник

A

AlexJok in pro.jvm
Ну и да, по http нужен inputstream все таки, если такой возможности нет, то придется скачивать файл целиком.
источник