我有一个加密的zip文件。解密后,我将得到一个包含zip内容的字节[]。但当我尝试使用bytearrayinputstream解压它时,zipinputstream.getnextentry()立即返回null。在调试过程中,我发现我的字节[]没有所需的本地文件头签名
静态长locsig=0x04034b50l;//”pk\003\004“
因此,zipinputstream.getnextentry()返回null。
但是,如果我将这些解密的字节写入一个文件,然后使用传递给zipinputstream()的fileinputstream(),那么一切都会按预期进行。下面是我当前的代码。有谁能建议一种不用先写入临时文件即可解压缩的方法吗?
byte[] data = AESUtil.decryptInputStream(...);
ByteArrayInputStream bis = new ByteArrayInputStream(data);
ZipInputStream stream = new ZipInputStream(bis);
ZipEntry entry;
while ((entry = stream.getNextEntry()) != null) {
...
}
1条答案
按热度按时间bprjcwpo1#
我得出的结论是zipinputstream不够灵活。当我用ApacheCommons的压缩类替换上面的代码时,一切都正常。下面是使用该库和相同字节数组的工作实现: