Почему 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, следовательно, ничего не читается из потока