Можно ли выполнить потоковую передачу в ZipOutputStream (или аналогичный) для архивирования нескольких файлов * одновременно * (Java)? - PullRequest
0 голосов
/ 31 марта 2020

Я пишу ETL приложение. Его функция состоит в том, чтобы получать большой объем данных из источника (например, много гигабайт), обогащать / преобразовывать его и использовать в архиве my-transformed-data.zip , содержащем как «хороший» файл данных и отфильтрованный «плохой» файл данных.

До сих пор я использовал потоковые методы для загрузки из источника и выполнения преобразований, достигая очень низкой нагрузки на память. Теперь проблема заключается в том, что эти два файла архивируются вместе в потоковом режиме для передачи клиенту.

Исследованные параметры:

  1. A ZipOutputStream (с несколькими putNextEntry из ZipEntry) сработал бы отлично, если бы я мог сначала передавать все хорошие данные, а потом - плохие, но это не так, и для сортировки источника в этот формат потребовались бы большие затраты памяти / хранилища, которых я определенно хочу избежать.

  2. Java 7 принес с собой пакет NIO, который, как мне кажется, предлагает некоторые виды функций, которые мне требуются ( например, запись в архив одновременно ), но он не может видеть способ передать этот файл по потоку, а не записать на диск поддерживать низкое использование памяти и памяти и получить заархивированный файл с двумя (или лучше N) файлами внутри него?

    Мои общие сведения Выступление по архивированию и файловым системам довольно младшее, поэтому любые косвенные советы приветствуются.

...