SevenZip Cookbook - lvsti/SevenZip GitHub Wiki

Table of Contents

Reading archive contents

Swift 3

let archive = SVZArchive(url: URL(fileURLWithPath: "foobar.7z"), createIfMissing: false)!
for entry in archive.entries {
    NSLog("%@", entry.name);
}

ObjC

SVZArchive* archive = [SVZArchive archiveWithURL:[NSURL fileURLWithPath:@"foobar.7z"]
                                 createIfMissing:NO
                                           error:NULL];
for (SVZArchiveEntry* entry in archive.entries) {
    NSLog(@"%@", entry.name);
}

Extracting a file to memory

Swift 3

let archive = SVZArchive(url: URL(fileURLWithPath: "foobar.7z"), createIfMissing: false)!
let entry = archive.entries.first!
let data = try! entry.extractedData();

ObjC

SVZArchive* archive = [SVZArchive archiveWithURL:[NSURL fileURLWithPath:@"foobar.7z"]
                                 createIfMissing:NO
                                           error:NULL];
SVZArchiveEntry* entry = archive.entries.firstObject;
NSData* data = [entry extractedDataWithPassword:nil error:NULL];

Extracting a file to disk

Swift 3

let archive = SVZArchive(url: URL(fileURLWithPath: "foobar.7z"), createIfMissing: false)!
let entry = archive.entries.first!
try! entry.extractToDirectory(at: URL(fileURLWithPath: "stuff.txt"))

ObjC

SVZArchive* archive = [SVZArchive archiveWithURL:[NSURL fileURLWithPath:@"foobar.7z"]
                                 createIfMissing:NO
                                           error:NULL];
SVZArchiveEntry* entry = archive.entries.firstObject;
[entry extractToDirectoryAtURL:[NSURL fileURLWithPath:@"stuff.txt"]
                         error:NULL];

Creating a new archive

Swift 3

let archive = SVZArchive(url: URL(fileURLWithPath: "new.7z"), createIfMissing: true)!
let dirEntry = SVZArchiveEntry(directoryName: "somedir")!
let fileEntry = SVZArchiveEntry(fileName: "somedir/somefile.txt", 
                                contentsOf: URL(fileURLWithPath: "/path/to/somefile.txt"))!
try! archive.updateEntries([dirEntry, fileEntry])

ObjC

SVZArchive* archive = [SVZArchive archiveWithURL:[NSURL fileURLWithPath:@"new.7z"]
                                 createIfMissing:YES
                                           error:NULL];
SVZArchiveEntry* dirEntry = [SVZArchiveEntry archiveEntryWithDirectoryName:@"somedir"];
SVZArchiveEntry* fileEntry = [SVZArchiveEntry archiveEntryWithFileName:@"somedir/somefile.txt"
                                                         contentsOfURL:[NSURL fileURLWithPath:@"/path/to/somefile.txt"]];
[archive updateEntries:@[dirEntry, fileEntry] error:NULL];

Adding a file to an existing archive

Swift 3

let archive = SVZArchive(url: URL(fileURLWithPath: "foobar.7z"), createIfMissing: false)!
var entries = archive.entries
let newEntry = SVZArchiveEntry(fileName: "somedir/somefile.txt",
                               contentsOf: URL(fileURLWithPath: "/path/to/somefile.txt"))!
entries.append(newEntry)
try! archive.updateEntries(entries)

ObjC

SVZArchive* archive = [SVZArchive archiveWithURL:[NSURL fileURLWithPath:@"foobar.7z"]
                                 createIfMissing:NO
                                           error:NULL];
NSMutableArray* entries = [archive.entries mutableCopy];
SVZArchiveEntry* newEntry = [SVZArchiveEntry archiveEntryWithFileName:@"somedir/somefile.txt"
                                                        contentsOfURL:[NSURL fileURLWithPath:@"/path/to/somefile.txt"]];
[entries addObject:newEntry];
[archive updateEntries:entries error:NULL];

Removing a file from an archive

Swift 3

let archive = SVZArchive(url: URL(fileURLWithPath: "foobar.7z"), createIfMissing: false)!
var entries = archive.entries
entries.removeFirst()
try! archive.updateEntries(entries)

ObjC

SVZArchive* archive = [SVZArchive archiveWithURL:[NSURL fileURLWithPath:@"foobar.7z"]
                                 createIfMissing:NO
                                           error:NULL];
NSMutableArray* entries = [archive.entries mutableCopy];
[entries removeObjectAtIndex:0];
[archive updateEntries:entries error:NULL];