[iOS][C] minizip 을 이용하여 압축하기
C 용으로 zip 포맷으로 압축해보자
소스코드는 이곳에서 받을수 있다.
http://www.opensource.apple.com/source/zlib/zlib-43/zlib/contrib/minizip/
혹은 이 파일을 받아서 사용하면된다.
그리고 컴파일시에 libz.dylib 라이브러를 포함시키면된다.
압축과정은 다음과 같다.
zipOpen() : 결과적으로 생성될 zip 파일 열기
zipOpenNewfileInzip() : 압축할 대상 파일 생성
zipWriteInFileInZip() : 생성된 압축할 대상 파일에 쓰기
zipCloseFileInzip() : 쓰기 완료된 대상 파일 닫기
zipClose() : zip 파일 자체 닫기
#import "zip.h" ... void createZip(char* target){ zipFile _zipFile = NULL; char *zipTargetFile = "target.zip";char *targetFile = "target.exe"; char *fileBuf = calloc(sizeof(char), 1024*1024*10); int file_size = 0; _zipFile = zipOpen((const char*) zipTargetFile, 0); if(!_zipFile) NSLog(@"zip open fail!"); zipOpenNewFileInZip(_zipFile, targetFile, NULL, NULL, 0, NULL, 0, "zip", 8, 1); FILE *fp = fopen(targetFile, "r"); fseek(fp, 0, SEEK_END); file_size = ftell(fp); fseek(fp, 0, SEEK_SET); fread(fileBuf, 1, file_size, fp); zipWriteInFileInZip(_zipFile, (void*)fileBuf, file_size); fclose(fp); zipCloseFileInZip(_zipFile); int ret = zipClose(_zipFile, NULL) == Z_OK? 1:0; if(ret == 1) NSLog(@"create zip success"); free(fileBuf); }