Я пытаюсь прочитать один файл из java.util.zip.ZipInputStream
и скопировать его в java.io.ByteArrayOutputStream
(чтобы затем я мог создать java.io.ByteArrayInputStream
и передать его сторонней библиотеке, которая завершит закрытие поток, и я не хочу, чтобы мой ZipInputStream
закрывался).
Вероятно, у меня что-то не хватает, но я никогда не вхожу в цикл while:
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) {
// ...
}
Что мне не хватает, что позволит мне копировать поток?
Edit:
Я должен был упомянуть ранее, что этот ZipInputStream
не поступает из файла, поэтому я не думаю, что могу использовать ZipFile
. Это происходит из файла, загруженного через сервлет.
Кроме того, я уже вызвал getNextEntry()
на ZipInputStream
, прежде чем перейти к этому фрагменту кода. Если я не пытаюсь копировать файл в другой InputStream
(через OutputStream
, упомянутый выше), и просто передайте ZipInputStream
в мою стороннюю библиотеку, библиотека закрывает поток, и я ничего не могу сделать больше, подобно работе с остальными файлами в потоке.