AIRでzipファイルの圧縮と展開(解凍)できるライブラリを公開します。
使い方
読み込み方法
import com.coltware.commons.zip.ZipEntry;
import com.coltware.commons.zip.ZipEvent;
import com.coltware.commons.zip.ZipFileReader;
private function unzip(file:File):void{
var zipReader:ZipFileReader = new ZipFileReader();
zipReader.open(file); <- Fileオブジェクトを設定してください
var entries:Array = zipReader.getEntries();
for(var i:int = 0; i<entries.length; i++){
var entry:ZipEntry = entries[i] as ZipEntry;
var filename:String = entry.getFilename();
var bytes:ByteArray = zipReader.unzip(entry);
// ここで、ByteArrayのデータをファイル等に書き出してください。
// getFilename() は、文字コードを自動的にSJISもしくはUTF-8を判別します。
// MACの濁点も解決します。
// ただし、展開処理で bytearray.uncompress(...) を使っているだけなので、なぜか解凍が失敗するものもあります。
}
ってのがおおよその、展開方法です。
zipReader.addEventListener(ZipEvent.ZIP_DATA_UNCOMPRESS,uncompressData); zipReader.unzipAsync(entry);
とすれば、非同期で展開が行われます。
private function uncompressData(e:ZipEvent):void{
var entry:ZipEntry = e.entry;
var file:File = dir.resolvePath(entry.getFilename());
var fs:FileStream = new FileStream();
fs.open(file,FileMode.WRITE);
fs.writeBytes(e.data);
fs.close();
}
のようにしてZipEntryとdata(ByteArray)で操作が行えます。
次回は、書き込みの方法も紹介します。
いま、ソースにコメントを書き込み中・・・・
asdocもできたらドキュメントともにソースも公開したいと思います。


