Tutorial: How to play with zip files in iOS; Aasim Naseem, January 11, 2013 Hello Dev mates… Hope you are enjoying your work in winters; (: Few days back I was working on a project where I needed to compress some files to create a zip archive; Although my teammate has done much of the work, I just refined some business logic and finalized the code to complete this feature; So lets start and see how we achieved this; 1. Setup your project Download an open source library from here; It is a very handy library for zip/unzip operations, written by Shannon Ai (acsolu@gmail.com) Create new project in Xcode (or open your existing one) Add libz.1.2.3.dylib into your project frameworks; Drag and drop downloaded library into your project and chose “copy items” option from a popup window; Add the following values in to your Constants file; If you are using .pch file, then declare then using @define macro; [code language=”objc” wraplines=”false”] //in .h file FOUNDATION_EXPORT NSString *const kZipFileName; //name of zip file to be created; FOUNDATION_EXPORT NSString *const kDirNameToCompress; //name of directory who’s contents will be compressed; FOUNDATION_EXPORT NSString *const kTargetDirName;//directory name where zip file will be extracted; FOUNDATION_EXPORT NSString *kZipFileCreateErrorMessage; //error message string; FOUNDATION_EXPORT NSString *kErroMessageTitle; //error title; FOUNDATION_EXPORT NSString *kOKButtonTitle; //Title of cancel button over alert view; //in .m file NSString *const kZipFileName = @"CompressedData.zip"; NSString *const kTargetDirName = @"AnyDirName"; NSString *const kDirNameToCompress @"dirToZip_OR_fileNameToZip"; FOUNDATION_EXPORT NSString *kZipFileCreateErrorMessage = @"Unable to to create zip file. Please try again later"; FOUNDATION_EXPORT NSString *kErroMessageTitle = @"Error"; FOUNDATION_EXPORT NSString *kOKButtonTitle = @"Ok"; [/code] 2. Create a zip file in any directory under/Document; #import “ZipArchive.h” into your class where you want to write zip code; Use the following code to create a zip file; [code language=”objc” wraplines=”false”] -(void) createZipFile{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *zipFile = [documentsDirectory stringByAppendingPathComponent:kZipFileName];//The place where zip file will be created; ZipArchive *zip = [[ZipArchive alloc] init]; BOOL result = [zip CreateZipFile2:zipFile];//this line will create an empty zip file with 0 KB in size; if(result){ NSError *error; NSArray *allFiles = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:kDirNameToCompress error:&error];//get list of all files in directory which need to compress; for(int index = 0; index<allFiles.count; index++){ id singleFileName = [allFiles objectAtIndex:index]; NSString *singleFilePath = [kDirNameToCompress stringByAppendingPathComponent:singleFileName]; [zip addFileToZip:singleFilePath newname:singleFileName];//one file has been added into zip archive }//end for [zip CloseZipFile2]; [zip release];//ignore this if you are using ARC }else{ [self showErrorMessage:kZipFileCreateErrorMessage withTitle:kErroMessageTitle]; }//end else }//end createZipFile //—————————————————— -(void) showErrorMessage:(NSString *)paramErrorMessage withTitle:(NSString*) paramTitle{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:paramTitle message:paramErrorMessage delegate:nil cancelButtonTitle:kOKButtonTitle otherButtonTitles:nil]; [alert show]; [alert release];//ignore this if you are using ARC; }//showErrorMessage [/code] 3. Decompress a zip archive; #import “ZipArchive.h” into your class where you want to write unzip code; Use the following code to extract a zip file; [code language=”objc” wraplines=”false”] -(void) decompressZipArchive{ NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *zipFilePath = [documentsDirectory stringByAppendingPathComponent:kZipFileName]; NSString *targetDirPath = [documentsDirectory stringByAppendingPathComponent:kTargetDirName]; ZipArchive* zipArchive = [[ZipArchive alloc] init]; if( [zipArchive UnzipOpenFile:zipFilePath] ) { if( [zipArchive UnzipFileTo:targetDirPath overWrite:YES] != NO ) {//one magical line //do whatever you want to do with uncompressed data //or just leave as it is after handling errors }//end if [zipArchive UnzipCloseFile]; }//end if [zipArchive release];//ignore this if you are using ARC }//end decompressZipArchive [/code] Thats all; You can use this code as it is into your project; Leave a comment if you find yourself in any trouble; Happy coding, and happy winters; Please follow and like us: iOS
Storage Issue with iOS-5 And iCloud; February 2, 2012March 12, 2024 Hello everyone .. Now a days, we are noticing that many people are getting rejection from AppStore due to storage issue; I looked into this issue and here are my findings regarding iOS-5 and iCloud; When we install our application in device, we have three main directories in our application space… Read More
EmailSend Application in iPhone January 6, 2012 Hello Everyone, hope all is good around you; Here is my another tutorial for iOS application; I’m composing a series of tutorial on different topics; You can find rest of the post under N-FAQ and iOS category; So here w go; In this application we will see how to Email Send in… Read More
Getting a Screencapture of UIView August 22, 2011March 12, 2024 Some times you have to capture a portion of you iPhone application programmatically; The quickest way is to pass the target view to following method and get its screenshot as an UIImage; [sourcecode language=”objc”] -(UIImage*)captureFullScreen:(UIView*) targetView{ UIGraphicsBeginImageContext(targetView.view.frame.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil); return fullScreenshot;… Read More
I am trying to open a password protected zip file but cant open it. Can you help me regarding that? Reply