1

ZipOutputStreamを使用して ZIP ファイルを作成しています。これは問題なく動作しますが、Javadoc は非常にまばらなので、ZipOutputStream の特性について疑問が残ります。

  1. サポートされる最大ファイル サイズに制限はありますか? ZIP に含まれるファイルと、結果の ZIP ファイル自体の両方ですか? size議論は ですが、long誰が知っていますか。(ファイルシステムには制限がないと仮定しましょう。)

  2. DEFLATED メソッドの使用を正当化する最小入力ファイル サイズは?

ZipInputStreamを使用して、常に結果の ZIP ファイルを読み取ります。

4

2 に答える 2

6

最も重要な側面は、現在の Java-7 JDK では、ZIP64 のサポートも含む2012 PKZIP 仕様ZipOutputStreamに従って ZIP ファイルを作成することです。ZIP64 機能には最初はバグがありましたが、最近のバージョンの Java 7 JDK は問題ありません。

  1. したがって、最大ファイル サイズは2 64 -1 バイトです。10GBのテストファイルで試してみました。これは、標準の ZIP の 4 GB よりもはるかに大きいです。結果の ZIP ファイル自体が 4 GB を超えた場合でも、問題なく ZIP ファイルに追加できました。

  2. DEFLATED メソッドの使用を正当化する最小ファイル サイズは22 バイトです。これは、ZIP ファイルの最小サイズとは関係ありません。これは偶然にも 22 バイトです (空の ZIP ファイルの場合)。この数は、増加する長さの s の文字列を追加することによって経験的に決定しましたa(下の図を参照)。このような一連の同一文字は非常によく圧縮されるため、現実の世界では損益分岐点は高くなります。

しぼんだ状態と保存状態

于 2013-08-19T14:41:15.113 に答える
4

ZIP ファイル形式の制限は次のとおりです。

.ZIP ファイルの最小サイズは 22 バイトです。アーカイブ ファイルとその中の個々のファイルの両方の最大サイズは、標準の .ZIP では 4,294,967,295 バイト (232-1 バイト、または 4 GiB から 1 バイトを引いた値)、18,446,744,073,709,551,615 バイト (264-1 バイト、または 16 EiB から 1 バイトを引いた値) です。 ) ZIP64 用 [31]

参考:zip(ファイル形式)

于 2013-08-17T12:15:42.357 に答える