5

我正在解压缩 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 的评论进行不同的实施

4

2 回答 2

4

正如@Joachim_Sauer 已经说过的,它们是苹果和李子。

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

于 2012-11-30T12:49:27.180 回答
3

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

InputStream in = new BufferedInputStream(
    new GZIPInputStream( new FileInputStream( file) )
);
于 2012-11-30T12:51:35.440 回答