C#2.0時代のゲームプログラミング(6)
file systemの話があがったついでに、zipファイルの話をしておこう。
Yanesdkではzipファイルをシームレスに読み込むために、このArchiverを提供する必要があった。.NET Framework2.0からはzip stream(?)をデコードするためのクラスGZipStreamが存在するので、これを使えると思った。
zipファイルというのは、ファイルの先頭と末尾にzip header、zip footerと呼ばれるようなものがついていて、それを手がかりに目的のファイルを探し出し、そして、そのファイルが圧縮して格納されていれば、デコードして読み込めばいい。*1
俗に、zip streamと呼ばれる形式で格納されており、これはzlib等で解凍できる。まあ、目的のファイルを探し出す部分は自前で書いてもそんなに苦労はないので、1時間ほどでその部分を仕上げたのだが、そのあとのデコードを.NET Framework2.0のGZipStreamを用いると、どうやっても出来ない。おかしいと思って念のためzlibを使ってみると、正しく解凍できる。*2
(つづく)
*1:本当は、せめて、SharpZipLibぐらいのことは標準で出来て欲しいところだが。
*2:これ以上調べる気にならないのだが、id:Kazzz:20050325なんかを見てzip streamって、それぞれの実装で微妙に違うんかいな?と思ってこれ以上調べるのを諦めた。誰か知ってたら教えてちょうだい。