Почему zipInputStream пуст, хотя запись существует?

Я пытаюсь распаковать архив, zis.getNextEntry() дает мне nextEntryЯ вижу правильное имя записи, но сам поток ввода zip пуст. Зачем?

byte[] htmlFile = new byte[]{};           
        ByteArrayInputStream bais =  new ByteArrayInputStream(Base64.decodeBase64(template.getKey().getFileBase64()));
        zis = new ZipInputStream(bais);
        ZipEntry ze = null;
        try {
             while ((ze = zis.getNextEntry()) != null) {
                if (!ze.isDirectory()) {
                    byte[] tempEntry = new byte[]{};
                    try {
                        zis.read(tempEntry);
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }                        
                }
            }
            try {
                zis.closeEntry();
                zis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

Ниже приведена некоторая отладочная информация, где вы можете увидеть - запись существует, но ничего не читается из потока:

1 ответ

Решение

Согласно JavaDoc

public int read(byte[] b)
         throws IOException

Считывает байты данных из этого входного потока до байтовой длины в массив байтов. Этот метод блокируется, пока не будет доступен какой-либо ввод

Этот метод просто выполняет вызов read(b, 0, b.length) и возвращает результат.

С длиной tempEntry 0, следовательно, ничего не читается из потока

Другие вопросы по тегам