我想要做的就是在運行時將圖像分配給UI元素(想想Winamp樣式),但是我不知道如何從一個zip文件讀取而不存儲到磁盤。或者如何與每個圖像分配到UI元素如何直接從壓縮包中讀取圖像文件而不解壓縮到磁盤?
我工作在Mac上與可可和目標C
我想要做的就是在運行時將圖像分配給UI元素(想想Winamp樣式),但是我不知道如何從一個zip文件讀取而不存儲到磁盤。或者如何與每個圖像分配到UI元素如何直接從壓縮包中讀取圖像文件而不解壓縮到磁盤?
我工作在Mac上與可可和目標C
使用objective-c zip (iOS/Mac zlib wrapper)
然後,你可以這樣做:
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:@"test.zip" mode:ZipFileModeUnzip];
[unzipFile goToFirstFileInZip];
ZipReadStream *read= [unzipFile readCurrentFileInZip];
NSMutableData *data= [[NSMutableData alloc] initWithLength:256];
int bytesRead= [read readDataWithBuffer:data];
[read finishedReading];
請問這個在Mac上工作還是這是爲IOS? – Jamesp1989 2012-04-19 18:21:58
應該可以在iOS和Mac上使用 – 2012-04-19 19:26:22
非常感謝。這會增加很多程序的內存佔用?每個文件都可以生成一個plist或字典嗎? – Jamesp1989 2012-04-19 19:37:47
的zipzap版本:
ZZArchive* archive = [ZZArchive archiveWithContentsOfURL:[NSURL fileURLWithPath:@"test.zip"]];
NSData* data = [archive.entries[0] newDataWithError:nil];
或者如果你正在尋找對於特定條目:
ZZArchive* archive = [ZZArchive archiveWithContentsOfURL:[NSURL fileURLWithPath:@"test.zip"]];
NSData* data = nil;
for (ZZArchiveEntry* entry in archive.entries)
if ([entry.fileName isEqualToString:@"test.txt"])
{
data = [entry newDataWithError:nil];
break;
}
掃描這樣的文件非常理想。掃描僅使用zip中央目錄,並且實際上並沒有提取數據,直到-[entry newDataWithError:]
。
只是一個快速的注意事項。我按照標籤使用osx和objective c。 – Jamesp1989 2012-04-19 15:18:32
[Objective C - 在不解壓縮的情況下訪問zip文件]可能的重複(http://stackoverflow.com/questions/9498900/objective-c-accessing-files-in-zip-without-extracting-zip) – 2012-04-19 17:59:30