Desenvolvi duas lógicas para um aplicativo de backup. Agora estou em dúvida sobre qual é mais própícia.
[file input streams diretos] A primeira consiste em abrir um stream de um arquivo zip e, a cada chamada de método, um novo arquivo é aberto, lido, e seus bytes são enviados para o zip. Desta forma, o zip fica aberto durante todo o processo de backup. Ou seja, o fluxo de dados é contínuo, da seguinte forma:
[memory streams] A outra maneira que fiz foi armazenando os bytes dos arquivos em um ArryList, e posteriormente abrindo o zip e enviando os arquivos de uma só vez com várias chamadas ao putNextEntry(). O que ocorre é que desta forma há uma utilização bem maior de memória, uma vez que os arquivos ficam "inteiramente" armazenados na memória.
O que vocês acham que é mais viável? Manter um stream zip aberto e ir criando, lendo e destruindo streams de arquivos´para serem copiados ao zip ou armazenar os arquivos primeiramente na memória e gerar o zip depois?