2012-04-19 12 views
6

मैं जो करना चाहता हूं वह रनटाइम पर ui तत्वों को छवियां असाइन करना है (Winamp शैली सोचें) लेकिन मुझे नहीं पता कि डिस्क पर संग्रहीत किए बिना ज़िप से पढ़ने के बारे में कैसे जाना है। या एक ui तत्वमैं डिस्क पर निकाले बिना सीधे ज़िप से छवि फ़ाइलों को कैसे पढ़ूं?

मैं कोको और उद्देश्य सी

+0

बस एक त्वरित नोट। मैं टैग के अनुसार ओएसएक्स और उद्देश्य सी का उपयोग कर रहा हूँ। – Jamesp1989

+0

[संभव सी - ज़िप निकालने के बिना ज़िप में फ़ाइलों तक पहुंचने का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/9498900/objective-c-accessing-files-in-zip-without-extracting-zip) –

उत्तर

5

उपयोग 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]; 
+0

क्या यह होगा मैक पर काम या आईओएस के लिए यह है? – Jamesp1989

+0

आईओएस और मैक –

+0

के साथ काम करना चाहिए बहुत धन्यवाद। क्या यह प्रोग्राम मेमोरी पदचिह्न के लिए बहुत कुछ जोड़ देगा? और प्रति फ़ाइल एक प्लिस्ट या शब्दकोश उत्पन्न करना संभव होगा? – Jamesp1989

1

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; 
    } 

इस तरह की फ़ाइलों के लिए स्कैनिंग काफी अनुकूल है। स्कैन केवल ज़िप केंद्रीय निर्देशिका का उपयोग करता है और वास्तव में डेटा को -[entry newDataWithError:] तक निकाला नहीं जाता है।

संबंधित मुद्दे

 संबंधित मुद्दे