5

Zipアーカイブの解凍に取り組んでいます。アーカイブにはZipとGZipの2種類があるため。

私は以下を使用しています

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)

このコードは、GZipではなく、Zip圧縮タイプのアーカイブで正常に機能します。

さまざまな関数でZipFileを使用する既存の機能があるため、上記のコードを使用する方法はありますか?ZipFileインターフェイスをZipInputStreamまたはGZipInputStreamに変更すると、複数の変更が必要になります。

編集:受信アーカイブのタイプがZipおよびGZipの場合、@ JoachimSauerのコメントに従って別の実装が必要ですか?

4

2 に答える 2

4

@Joachim_Sauerがすでに述べたように、それらはリンゴとプラムです。

両方(およびそれ以上)の圧縮/アーカイブタイプを処理できるapacheのcompressを見てください。ただし、さまざまな実装を行う必要があり、使用する実装(zipファイルとgzipファイルのどちらを処理するか)を自分で把握する必要があります。

于 2012-11-30T12:49:27.180 に答える
3

Zipgzipは、2 つのまったく異なるファイル形式です。とを見てjava.util.zip.GZIPOutputStreamくださいjava.util.zip.GZIPInputStream:

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