Archive for 2009/8/12
さて、今までZipの圧縮・解凍ツールを作っていた。
もともと、世の中のツールのように高機能なZipの圧縮・解凍がしたいわけではなく
最近のZipパッケージ形式のファイル(MS-OfficeのOpenXML等)の中身を見て、
中身を変更しようかなと思ったのだが、ちょっとすんなりとはできなそうです。
しかし、結構世の中に普及しているZipファイルというのは多様なのだと学びました。
まず、Zipファイル自体のフォーマット(つまりファイルを格納するための情報の持ち方)にも、
ZipとZip64というものがあり、Zip64は大きなファイル形式も格納できるフォーマットです。
また、圧縮方法もZipの仕様としてはいろいろな圧縮ルールが入れられるのですが、事実上 deflateのみ。
ただし、deflateにも通常のdeflateとdeflate64という、これまた大きなファイルでも圧縮できる方式があるのです。
そして、ByteArray.uncompress()で確実に解凍できるのは、
Zip形式のdeflateのみなのです。
まず、macの標準ツールでZip圧縮すると、圧縮方式がdeflate64という形式になり解凍できない。
また、MS-OfficeのOpenXMLのファイルはZip64という形式のZipファイルで、これが部分的に解凍できない。
なぜか、
docProps/app.xml
docProps/core.xml
が解凍できないのです。
今のところOpenOfficeで作成したファイルは大丈夫そうです。
んー、こうなると道は2つ。
1)自前で解凍するロジックを作る
解凍が十分早くできるのか心配・・・
解凍するための資料を見ようと本を探すと、絶版ばかりで高騰中・・・・、んー大学中にハフマンなんちゃら、ちゃんと勉強しとけばよかったかな。
でも、当時はそれが何を意味するのかまったくわからなかったし。
2)ActionScriptで解凍しない
100%ローカルでできなくなるかな・・・・
になりました。
ながーい時間をかけて1)で行こうかなと思っていますが、とりあえずこのあたりは保留にしておきます。


