como criar arquivos zip java com um limite máximo de tamanho de arquivo

Eu preciso escrever um algoritmo em java (para um aplicativo android) para ler uma pasta contendo mais pastas e cada uma contendo imagens e arquivos de áudio para que a estrutura seja a seguinte:mainDir/categorySubfolder/myFile1.jpg

Meu problema é que eu preciso limitar o tamanho do arquivo para 16MB e, em tempo de execução, criar quantos arquivos forem necessários para conter todos os meus arquivos do meu arquivo principal.mainDir pasta.

Eu tentei vários exemplos da rede e li a documentação do java, mas não consigo entender e juntar tudo da maneira que eu preciso. Alguém já fez isso antes ou tem um link ou um exemplo para mim?

Eu resolvi a leitura dos arquivos com um método recursivo, mas não consigo escrever a lógica para a criação do zip.

Estou aberto para sugestões ou melhor um exemplo de trabalho.

questionAnswers(3)

yourAnswerToTheQuestion