UnrarKit is here to enable Mac and iOS apps to easily work with RAR files for read-only operations. It is currently based on version 5.2.1 of the UnRAR library.
There is a main project, with unit tests, and a basic iOS example project, which demonstrates how to use the library.
I'm always open to improvements, so please submit your pull requests, or create issues for someone else to implement.
URKArchive *archive = [URKArchive rarArchiveAtPath:@"An Archive.rar"];
NSError *error = nil;
NSArray *filesInArchive = [archive listFilenames:&error];
for (NSString *name in filesInArchive) {
NSLog(@"Archived file: %@", name);
}
NSArray *fileInfosInArchive = [archive listFileInfo:&error];
for (URKFileInfo *info in fileInfosInArchive) {
NSLog(@"Archive name: %@ | File name: %@ | Size: %lld", info.archiveName, info.filename, info.uncompressedSize);
}
NSArray *fileInfosInArchive = [archive listFileInfo:&error];
if (archive.isPasswordProtected) {
NSString *givenPassword = // prompt user
archive.password = givenPassword
}
// You can now extract the files
BOOL extractFilesSuccessful = [archive extractFilesTo:@"some/directory"
overWrite:NO
progress:
^(URKFileInfo *currentFile, CGFloat percentArchiveDecompressed) {
NSLog(@"Extracting %@: %f%% complete", currentFile.filename, percentArchiveDecompressed);
}
error:&error];
NSData *extractedData = [archive extractDataFromFile:@"a file in the archive.jpg"
progress:^(CGFloat percentDecompressed) {
NSLog(@"Extracting, %f%% complete", percentDecompressed);
}
error:&error];
UnrarKit is a CocoaPods project, which is the recommended way to install it. If you're not familiar with CocoaPods, you can start with their Getting Started guide.
I've included a sample podfile
in the Example directory along with the sample project. Everything should install with the single command:
pod install
To open in Xcode, use the UnrarKit.xcworkspace file, which includes the other projects.
Full documentation for the project is available on CocoaDocs.
- Dov Frankel ([email protected])
- Rogerio Pereira Araujo ([email protected])
- Vicent Scott ([email protected])