Lecture d'un ZipInputStream dans un ByteArrayOutputStream

Je suis en train de lire un seul fichier à partir d'un java.util.zip.ZipInputStreamet le copier dans un java.io.ByteArrayOutputStream (de sorte que je peux ensuite créer un java.io.ByteArrayInputStream et la main qui à une 3ème partie de la bibliothèque qui prendra fin à la fermeture du flux, et je ne veux pas que mon ZipInputStream arriver fermé).

Je suis probablement manque quelque chose de fondamental ici, mais je n'entrez jamais dans la boucle while ici:

ByteArrayOutputStream streamBuilder = new ByteArrayOutputStream();
int bytesRead;
byte[] tempBuffer = new byte[8192*2];
try {
    while ((bytesRead = zipStream.read(tempBuffer)) != -1) {
        streamBuilder.write(tempBuffer, 0, bytesRead);
    }
} catch (IOException e) {
    //...
}

Ce qui me manque qui va me permettre de copier le flux?

Edit:

Je devrais ai mentionné plus tôt que ce ZipInputStream n'est pas venue à partir d'un fichier, donc je ne pense pas que je peux utiliser un ZipFile. Il est à venir à partir d'un fichier téléchargé par l'intermédiaire d'un servlet.

Aussi, j'ai déjà appelé getNextEntry() sur le ZipInputStream avant d'arriver à cet extrait de code. Si je ne tente pas de copier le fichier dans un autre InputStream (via le OutputStream mentionné ci-dessus), et vient de passer le ZipInputStream à mon 3ème partie de la bibliothèque, la bibliothèque ferme le flux, et je ne peux rien faire de plus, comme traiter avec les fichiers restants dans le flux.

source d'informationauteur pkaeding