检查流是否是zip文件

AKS*_*AKS 5 java zip stream

我们需要确定传入的InputStream是否是对zip文件或zip数据的引用.我们没有引用流的基础源.我们的目标是将此流的内容复制到指向备用位置的OutputStream中.

我尝试使用ZipInputStream读取流并提取ZipEntry.如果流是常规文件,ZipEntry为null - 正如预期的那样 - 但是,在检查ZipEntry时,我从流中丢失了初始的几个字节.因此,当我知道流是常规流时,我已经丢失了流中的初始数据.

关于如何检查InputStream是否是没有数据丢失的存档的任何想法都会有所帮助.

谢谢.

Gal*_*tus 6

假设您的原始输入流没有缓冲,我会尝试将原始流包装在BufferedInputStream中,然后将其包装在ZipInputStream中进行检查.您可以在检查后使用BufferedInputStream中的"mark"和"reset"返回到流中的初始位置.