我正在尝试解压缩档案,
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();
}
下面是一些调试信息,你可以看到 - 条目存在,但没有从流中读取:
答案 0 :(得分:2)
根据JavaDoc
public int read(byte[] b)
throws IOException
将此输入流中的byte.length个字节数据读入 字节数组。此方法将阻止,直到某些输入可用
此方法只执行调用read(b,0,b.length)并返回 结果。
由于tempEntry
的长度为0,因此无法从流中读取任何内容