ウィキっとく?
zip
最終更新:
匿名ユーザー
-
view
javaのzip圧縮
-
javaのzip圧縮/解凍では以下のどちらかのパッケージが使用できる。
しかし、下記の文字化けの問題で org.apache.tools.zip を使う必要がある。- java.util.zip (標準)
- org.apache.tools.zip (apacheAnt)
ハマったところ
文字化け
-
原因:
- java.util.zip はUTF-8固定のため。
-
対策:
-
org.apache.tools.zip を使用する。
ZipOutputStream#setEncoding() メソッドでエンコード指定が可能。- org.apache.tools.zip は apacheAnt の ant.jar の中に入っている。-- http://ant.apache.org/
-
org.apache.tools.zip を使用する。
WindowsXP 標準の Compressed (zipped) Folder で空フォルダがファイルに見える。
-
原因:
- 不明。ダブルクリックしてみるとフォルダ扱いになっている。
-
対策:
-
不明。解凍すると正しくフォルダになる。
どなたかご存知の方いましたらご教授よろしくお願いします。
-
不明。解凍すると正しくフォルダになる。
解凍時、エラーが発生
-
原因:
-
ヘッダのCRC,サイズを見る解凍ツールの問題?
ヘッダにCRC,サイズが入ってないとエラーになる解凍ツールがあるらしい
-
ヘッダのCRC,サイズを見る解凍ツールの問題?
-
対策:
-
ランダムファイルアクセス使用で圧縮し、自動的にヘッダにCRC,サイズ等を書き込む。 or
1回仮圧縮をしてサイズを計り、2回目で本圧縮時にヘッダに設定する。 or
ヘッダのサイズを見てエラーを吐く解凍ツールを使わない。(難
-
ランダムファイルアクセス使用で圧縮し、自動的にヘッダにCRC,サイズ等を書き込む。 or
zipフォーマット仕様
CRC, 圧縮サイズ, 解凍時サイズの設定について
- 上記3つの設定箇所はエントリポイントのヘッダとフッタにある。
-
圧縮サイズは圧縮後にしかわからないため、1回サイズ測定用に仮圧縮し、2回目の本圧縮時にサイズを設定する必要がある。
しかし、以下の場合は内部で自動計算し、ヘッダに戻って設定してくれるので設定不要。- org.apache.tools.zip.ZipOutputStream では Method=DEFLATED(圧縮)かつ seekable (ランダムアクセスファイル)の場合のみ
-
ランダムアクセスファイル使用方法
-
org.apache.tools.zip.ZipOutputStream の以下のコンストラクタを使用する。
ZipOutputStream zos = new ZipOutputStream(File);
-
org.apache.tools.zip.ZipOutputStream の以下のコンストラクタを使用する。
コメント
-
間違い、ご意見などありましたらよろしくお願いします。