zoukankan      html  css  js  c++  java
  • 开源项目objectivezip

    Objective-Zip is a small Cocoa/Objective-C library that wraps ZLib and MiniZip in an object-oriented friendly way.

    项目地址:

    http://code.google.com/p/objective-zip/

    部分使用代码:(代码来自官网下载)

      1 - (void) test {
      2     NSAutoreleasePool *pool= [[NSAutoreleasePool alloc] init];
      3 
      4     @try {
      5         NSString *documentsDir= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
      6         NSString *filePath= [documentsDir stringByAppendingPathComponent:@"test.zip"];
      7 
      8         [self performSelectorOnMainThread:@selector(log:) withObject:@"Opening zip file for writing..." waitUntilDone:YES];
      9         
     10         ZipFile *zipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeCreate];
     11 
     12         [self performSelectorOnMainThread:@selector(log:) withObject:@"Adding first file..." waitUntilDone:YES];
     13         
     14         ZipWriteStream *stream1= [zipFile writeFileInZipWithName:@"abc.txt" fileDate:[NSDate dateWithTimeIntervalSinceNow:-86400.0] compressionLevel:ZipCompressionLevelBest];
     15 
     16         [self performSelectorOnMainThread:@selector(log:) withObject:@"Writing to first file's stream..." waitUntilDone:YES];
     17 
     18         NSString *text= @"abc";
     19         [stream1 writeData:[text dataUsingEncoding:NSUTF8StringEncoding]];
     20 
     21         [self performSelectorOnMainThread:@selector(log:) withObject:@"Closing first file's stream..." waitUntilDone:YES];
     22         
     23         [stream1 finishedWriting];
     24         
     25         [self performSelectorOnMainThread:@selector(log:) withObject:@"Adding second file..." waitUntilDone:YES];
     26         
     27         ZipWriteStream *stream2= [zipFile writeFileInZipWithName:@"x/y/z/xyz.txt" compressionLevel:ZipCompressionLevelNone];
     28         
     29         [self performSelectorOnMainThread:@selector(log:) withObject:@"Writing to second file's stream..." waitUntilDone:YES];
     30         
     31         NSString *text2= @"XYZ";
     32         [stream2 writeData:[text2 dataUsingEncoding:NSUTF8StringEncoding]];
     33         
     34         [self performSelectorOnMainThread:@selector(log:) withObject:@"Closing second file's stream..." waitUntilDone:YES];
     35         
     36         [stream2 finishedWriting];
     37         
     38         [self performSelectorOnMainThread:@selector(log:) withObject:@"Closing zip file..." waitUntilDone:YES];
     39         
     40         [zipFile close];
     41         [zipFile release];
     42         
     43         [self performSelectorOnMainThread:@selector(log:) withObject:@"Opening zip file for reading..." waitUntilDone:YES];
     44         
     45         ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
     46         
     47         [self performSelectorOnMainThread:@selector(log:) withObject:@"Reading file infos..." waitUntilDone:YES];
     48         
     49         NSArray *infos= [unzipFile listFileInZipInfos];
     50         for (FileInZipInfo *info in infos) {
     51             NSString *fileInfo= [NSString stringWithFormat:@"- %@ %@ %d (%d)", info.name, info.date, info.size, info.level];
     52             [self performSelectorOnMainThread:@selector(log:) withObject:fileInfo waitUntilDone:YES];
     53         }
     54         
     55         [self performSelectorOnMainThread:@selector(log:) withObject:@"Opening first file..." waitUntilDone:YES];
     56         
     57         [unzipFile goToFirstFileInZip];
     58         ZipReadStream *read1= [unzipFile readCurrentFileInZip];
     59         
     60         [self performSelectorOnMainThread:@selector(log:) withObject:@"Reading from first file's stream..." waitUntilDone:YES];
     61         
     62         NSMutableData *data1= [[[NSMutableData alloc] initWithLength:256] autorelease];
     63         int bytesRead1= [read1 readDataWithBuffer:data1];
     64         
     65         BOOL ok= NO;
     66         if (bytesRead1 == 3) {
     67             NSString *fileText1= [[[NSString alloc] initWithBytes:[data1 bytes] length:bytesRead1 encoding:NSUTF8StringEncoding] autorelease];
     68             if ([fileText1 isEqualToString:@"abc"])
     69                 ok= YES;
     70         }
     71         
     72         if (ok)
     73             [self performSelectorOnMainThread:@selector(log:) withObject:@"Content of first file is OK" waitUntilDone:YES];
     74         else
     75             [self performSelectorOnMainThread:@selector(log:) withObject:@"Content of first file is WRONG" waitUntilDone:YES];
     76             
     77         [self performSelectorOnMainThread:@selector(log:) withObject:@"Closing first file's stream..." waitUntilDone:YES];
     78         
     79         [read1 finishedReading];
     80         
     81         [self performSelectorOnMainThread:@selector(log:) withObject:@"Opening second file..." waitUntilDone:YES];
     82 
     83         [unzipFile goToNextFileInZip];
     84         ZipReadStream *read2= [unzipFile readCurrentFileInZip];
     85 
     86         [self performSelectorOnMainThread:@selector(log:) withObject:@"Reading from second file's stream..." waitUntilDone:YES];
     87         
     88         NSMutableData *data2= [[[NSMutableData alloc] initWithLength:256] autorelease];
     89         int bytesRead2= [read2 readDataWithBuffer:data2];
     90         
     91         ok= NO;
     92         if (bytesRead2 == 3) {
     93             NSString *fileText2= [[[NSString alloc] initWithBytes:[data2 bytes] length:bytesRead2 encoding:NSUTF8StringEncoding] autorelease];
     94             if ([fileText2 isEqualToString:@"XYZ"])
     95                 ok= YES;
     96         }
     97         
     98         if (ok)
     99             [self performSelectorOnMainThread:@selector(log:) withObject:@"Content of second file is OK" waitUntilDone:YES];
    100         else
    101             [self performSelectorOnMainThread:@selector(log:) withObject:@"Content of second file is WRONG" waitUntilDone:YES];
    102         
    103         [self performSelectorOnMainThread:@selector(log:) withObject:@"Closing second file's stream..." waitUntilDone:YES];
    104         
    105         [read2 finishedReading];
    106         
    107         [self performSelectorOnMainThread:@selector(log:) withObject:@"Closing zip file..." waitUntilDone:YES];
    108         
    109         [unzipFile close];
    110         [unzipFile release];
    111         
    112         [self performSelectorOnMainThread:@selector(log:) withObject:@"Test terminated succesfully" waitUntilDone:YES];
    113         
    114     } @catch (ZipException *ze) {
    115         [self performSelectorOnMainThread:@selector(log:) withObject:@"Caught a ZipException (see logs), terminating..." waitUntilDone:YES];
    116         
    117         NSLog(@"ZipException caught: %d - %@", ze.error, [ze reason]);
    118 
    119     } @catch (id e) {
    120         [self performSelectorOnMainThread:@selector(log:) withObject:@"Caught a generic exception (see logs), terminating..." waitUntilDone:YES];
    121 
    122         NSLog(@"Exception caught: %@ - %@", [[e class] description], [e description]);
    123     }
    124     
    125     [pool drain];
    126 }

    无论生活、还是技术,一切都不断的学习和更新~~~努力~
  • 相关阅读:
    使用Stream方式处理集合元素
    Consumer方法结合Lambda表达式的应用
    java-遍历字符串的两种方式:1.char charAt(int index);2.char[] toCharArray()
    java-成员变量与局部变量的测试
    java-统计字符串中各字符次数
    java-字符串的遍历和字符串数组的遍历
    java-String类的获取方法(indexOf();substring()等)
    java-模拟登陆练习
    java-String类中的各字符串判断(包括" "和null的区别)
    java-String类的常见面试题
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/2813031.html
Copyright © 2011-2022 走看看