为什么ZipFile(文件,ZipFile.OPEN_READ)不适用于GZip

时间:2012-11-30 11:37:56

标签: java zip gzip

我正在解压缩Zip档案。由于存档有两种类型 - Zip和GZip。

我正在使用以下

ZipFile zipFile = new ZipFile(file, ZipFile.OPEN_READ);

但它为GZip类型的档案提供了以下错误

java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)

此代码适用于Zip压缩类型存档,而不适用于GZip

有没有办法使用上面的代码,因为我有各种函数使用ZipFile的现有功能。如果我将ZipFile接口更改为ZipInputStream或GZipInputStream,那么我需要更改多个东西。

编辑:如果传入的档案是Zip和GZip类型,我是否需要根据@Joachim Sauer的评论进行不同的实施

2 个答案:

答案 0 :(得分:3)

正如@Joachim_Sauer所说,它们是苹果和李子。

看看apache的compress,它可以处理两种(和更多)压缩/存档类型。但是,您需要执行不同的实现,并且您必须自己确定要使用的实现(无论是否处理zip或gzip文件)。

答案 1 :(得分:3)

Zipgzip是两种完全不同的文件格式。请查看java.util.zip.GZIPOutputStreamjava.util.zip.GZIPInputStream

InputStream in = new BufferedInputStream(
    new GZIPInputStream( new FileInputStream( file) )
);