0

我在 NSMainBuddle (code.zip) 中有一个 zip 文件,其中 code.zip 有两个文件名.txt、group.txt,现在我想在 code.zip 文件中再添加一个文件,即我正在尝试添加 Demo.txt。

- (IBAction)CreatezipAction:(id)sender{
ZipFile *zipFile= [[ZipFile alloc]initWithFileName:[[NSBundle mainBundle] pathForResource:@"code" ofType:@"zip"] mode:ZipFileModeCreate];
 ZipWriteStream *stream= [zipFile writeFileInZipWithName:@"Demo.txt" compressionLevel:ZipCompressionLevelBest];   
    NSString* str= @"Sample String…………";
    NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding]; 
    [stream writeData:data];
    [stream finishedWriting];
}

它成功添加到 NSMainBunble 因为如果我单击对应于 lisAllFileAction: 的按钮,它将显示如下......。

- (IBAction)lisAllFileAction:(id)sender {
    ZipFile *unzipFile= [[ZipFile alloc]initWithFileName:[[NSBundle mainBundle] pathForResource:@"code" ofType:@"zip"] mode:ZipFileModeUnzip];
    NSArray *infos= [unzipFile listFileInZipInfos];
    for (FileInZipInfo *info in infos) {
        NSLog(@"- %@ %@ %d (%d)", info.name, info.date, info.size, info.level);        
    }
}

模拟器 2 上的输出

012-06-04 11:55:42.143 zipDemo[1757:207] - code-Zip/names.txt 2012-5-30 17:19:00 +0000 983 (-1)
2012-06-04 11:55:42.143 zipDemo[1757:207] - code-Zip/names.txt 2012-06-01 20:07:50 +0000 2563 (-1)
2012-06-04 11:55:42.144 zipDemo[1757:207] - Demo.txt 2012-06-04 06:25:40 +0000 12 (9)
  1. 现在我想知道可以手动打开这个Demo.txt吗?
  2. b/w code-Zip/names.txt 2012-06-01 20:07:50 和 Demo.txt 2012-06-04 06:25:40 +0000 12 (9) 有什么区别?
  3. 可以像这样在 NSMainBundle 中创建文件,应用程序有问题吗?
  4. 实际上在哪里创建了 Demo.txt 文件?
4

1 回答 1

1

mainBundle只读的。你不能在 mainBundle 中写任何东西,你可以加载。您应该在DocumentsorCaches目录中创建文件。因此,应用程序第一次启动时,您可以将 zip 文件从 mainBundle 复制到 Documents 目录,然后使用它代替 mainBundle 中的 zip 文件。

于 2012-06-04T07:25:52.833 回答