case Computer :

[iOS][C] minizip 을 이용하여 압축하기

거곰 2012. 9. 16. 17:12

C 용으로 zip  포맷으로 압축해보자


소스코드는 이곳에서 받을수 있다.

http://www.opensource.apple.com/source/zlib/zlib-43/zlib/contrib/minizip/


혹은 이 파일을 받아서 사용하면된다. 

zlib.zip


그리고 컴파일시에 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); }


반응형