ZIPファイルの圧縮・解凍

Cocoaに関するヌマタメモ
2008年11月29日 22:36

zlib が使える。ライブラリは Mac OS X 標準の開発環境に含まれている。

  1. Other Linker Flags に「-lz」を付け加える。
  2. http://www.gzip.org/zlib/ から最新版のソースをダウンロードして、「contrib/minizip/」フォルダの中の iowin32.c、iowin32.h、ChangeLogUnzip、Makefile 以外のファイルをプロジェクトに追加する。
  3. 利用する場所で、zip.h / unzip.h をインクルードする。

などなど。

NSString *filePath = ...; 
unsigned char pathBufferPATH_MAX; 
unz_file_info fileInfo; 

unzFile zipFile = unzOpen(filePath cString); 

unzGoToFirstFile(zipFile); 
while (true) { 
    unzGetCurrentFileInfo(zipFile, &fileInfo, pathBuffer, PATH_MAX, NULL0NULL0); 
    // ... 
    if (unzGoToNextFile(zipFile) != UNZ_OK) { 
        break
    } 


unzClose(zipFile);

なお、日本語パスが通らない場合の簡単な対処方法は、/tmp フォルダなどに time(NULL) などを利用して英語名のシンボリックリンクを作成して、それをオープンすることである。

コメントを書く


トラックバックはありません。

トラックバックURL: http://numata.designed.jp/mt-tb.cgi/48