Lendo o arquivo zip eficientemente em Java

Estou trabalhando em um projeto que funciona em uma quantidade muito grande de dados. Eu tenho muitos (milhares) de arquivos zip, cada um contendo UM arquivo txt simples com milhares de linhas (cerca de 80k linhas). O que estou fazendo atualmente é o seguinte:

for(File zipFile: dir.listFiles()){
ZipFile zf = new ZipFile(zipFile);
ZipEntry ze = (ZipEntry) zf.entries().nextElement();
BufferedReader in = new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
...

Desta forma eu posso ler o arquivo linha por linha, mas é definitivamente muito lento. Dado o grande número de arquivos e linhas que precisam ser lidos, preciso lê-los de maneira mais eficiente.

Procurei uma abordagem diferente, mas não consegui encontrar nada. O que eu acho que devo usar são as APIs do java nio destinadas a operações intensivas de E / S, mas não sei como usá-las com arquivos zip.

Qualquer ajuda seria realmente apreciada.

Obrigado,

Marco

questionAnswers(5)

yourAnswerToTheQuestion