Tenho uma aplicação desktop com alguns formulários que permitem que arquivos sejam anexados. Quando o usuário conclui a utilização da aplicação, preciso gerar um arquivo (apenas um) que contenha todos os arquivos anexados nos vários formulários. Funciona como uma espécie de backup.
O grande detalhe é que este arquivo gerado deve depois ser “recuperado” de forma que os arquivos anexos originais possam se acessados em separado.
Qual seria a melhor solução para esse problema? Trabalhar com a classe File e com streams é suficiente ?
Use as classes do Java que lhe permitem gravar e ler de arquivos .zip (java.util.zip.*) .
Não é preciso habilitar a compressão em um arquivo .zip, se você não quiser (assim você economiza alguns segundos de CPU). Mas acho que é melhor habilitar a compressão.
A idéia é que você guarde o arquivo com seus anexos em um arquivo .zip (monte um zip para cada arquivo com anexos), e se você quiser acessá-los separadamente, basta usar alguma coisa que abra arquivos .zip, como o próprio Zip Folders do Windows XP/2003.
Esse esquema de guardar coisas relacionadas em um único arquivo é usado pelo próprio Java (um .jar é um .zip com nome diferente), pelo OpenOffice (onde um arquivo .swi é um arquivo .zip contendo o texto em formato XML e as figuras anexadas), etc. Portanto você vai estar em boa companhia.