2012-04-19 4 views
6

Co chcę zrobić, to przypisywać obrazy do elementów interfejsu użytkownika w środowisku uruchomieniowym (myślę o stylu Winampa), ale nie mam pojęcia, jak wykonać odczyt z pliku ZIP bez zapisywania na dysku. Albo jak przypisać każdy obraz do ui elementuJak odczytać pliki obrazów bezpośrednio z suwaka bez wypakowywania na dysk?

pracuję na mac z kakao i Objective C

+0

Tylko krótka uwaga. Im przy użyciu osx i cel c, jak na znaczniki. – Jamesp1989

+0

możliwy duplikat [Obiektyw C - Uzyskiwanie dostępu do plików w formacie zip bez rozpakowywania zip] (http://stackoverflow.com/questions/9498900/objective-c-accessing-files-in-zip-without-extracting-zip) –

Odpowiedz

5

Korzystanie objective-c zip (iOS/Mac zlib wrapper)

Następnie można zrobić:

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

Czy to będzie pracować na Macu czy jest to na IOS? – Jamesp1989

+0

powinien działać z iOS i Mac –

+0

Wielkie dzięki. Czy to doda wiele śladu pamięci do programów? I czy będzie możliwe wygenerowanie plistu lub słownika na plik? – Jamesp1989

1

zipzap wersja:

ZZArchive* archive = [ZZArchive archiveWithContentsOfURL:[NSURL fileURLWithPath:@"test.zip"]]; 
NSData* data = [archive.entries[0] newDataWithError:nil]; 

Lub jeśli szukasz dla określonego wpisu:

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

Skanowanie takich plików jest praktycznie optymalne. Skanowanie wykorzystuje tylko centralny katalog zip i nie wyodrębnia danych do -[entry newDataWithError:].

Powiązane problemy