2010-11-21 1 views
0

Gibt es Bibliotheken, die in Objective C funktionieren, um ganze Ordner zu komprimieren (und zu dekomprimieren)? Ich habe auf einige von ihnen sah durch die Suche, aber sie schauen, wie sie Dateien einzeln hinzugefügt erfordern und einige von ihnen angeblich Absturz ...Einen Ordner in Objective C zerlegen

Es sieht aus wie diese Bibliothek funktionieren könnte: http://bitbucket.org/dchest/osxzip/overview

Ich weiß nicht, wenn es jedoch Ordner unterstützt. Wer weiß, ob es weitere Bibliotheken gibt, die das Zippen von Ordnern unterstützen? Selbst Beispielcode für die Interaktion mit der Befehlszeile libz wäre in Ordnung mit mir ...

Antwort

1

Sie könnten NSTask verwenden, um die Befehlszeile ditto Programm ausführen. Sehen Sie sich die Manpage ditto für die richtige Kombination von Flags an, um Finder-kompatibles Zippen zu erhalten.

+0

Vielen Dank für das Link-- nicht wußte, dito könnte Ordner komprimieren. Nachdem ich ein paar Dinge durchgesehen habe, möchte ich am Ende vielleicht etwas Befehlszeile verwenden, weil ich momentan darüber nachdenke, ob ich mit Qt gehen soll (für die Cross-Plattform werde ich 7-zip unter Windows über die Befehlszeile und dito verwenden) auf Mac) oder Objective C gerade jetzt ... –

1

Gemäß diesem Beispiel: http://www.raywenderlich.com/1948/how-integrate-itunes-file-sharing-with-your-ios-app Sie können ein NSData Objekt mit den Zip Daten erhalten und dann schreiben Sie es einfach mit [data writeToFile ....]

- (NSData *)exportToNSData { 
    NSError *error; 
    NSURL *url = [NSURL fileURLWithPath:_docPath]; 
    NSFileWrapper *dirWrapper = [[[NSFileWrapper alloc] initWithURL:url options:0 error:&error] autorelease]; 
    if (dirWrapper == nil) { 
     NSLog(@"Error creating directory wrapper: %@", error.localizedDescription); 
     return nil; 
    } 

    NSData *dirData = [dirWrapper serializedRepresentation]; 
    NSData *gzData = [dirData gzipDeflate];  
    return gzData; 
} 
+0

Danke für die Info, aber es ist durchaus möglich, dass das Verzeichnis, das ich zipper ist, eine riesige Anzahl von Dateien (10k +) hat und über 200mb ist, also bin ich mir nicht sicher ob wäre der beste Ansatz (wenn es sowieso im RAM reißt). Wäre das eingeschränkt, wenn ich so viele Dateien hätte? (Übrigens bin ich nicht diejenige, die diese Verzeichnisstruktur und die ganzen 10k-Dateien erfunden hat: P) –

+0

Ich weiß es nicht wirklich ... Ich habe es nur für Mac OS x nie auf einem Iphone benutzt ... aber Ich denke, es sollte funktionieren. – Staeff

+1

Um wählerisch zu sein, wenn Leute von "Zippen" reden, meinen sie normalerweise das PKZip-Format, das wahrscheinlich nicht das ist, was Ihr Code-Sample tut. – JWWalker