zip

Zipper

🗳A library to create, read and modify ZIP archive files, written in Swift.

Showing:

Popularity

Downloads/wk

0

GitHub Stars

37

Maintenance

Last Commit

2yrs ago

Contributors

1

Package

Dependencies

0

License

MIT

Categories

Readme

Meet Zipper

Zipper

Author EMail MIT
Version Platforms Swift
Build Passing Cocoapods Carthage SPM

🏵 Introduction

Zipper is a Effortless ZIP Handling in Swift.

📋 Requirements

Type

Requirement

Platform

iOS

9.0+

macOS

10.11

tvOS

9.0

watchOS

2.0

Linux

with zlib

IDE

Xcode

10.2+

Language

Swift

5+

📲 Installation

CocoaPods

Zipper is available on CocoaPods.

use_frameworks!
pod 'Zipper'

Manually

Copy all files in the Zipper directory into your project.

🛌 Dependency

N/A

❤️ Contribution

You are welcome to fork and submit pull requests.

🔖 License

Zipper is open-sourced software, licensed under the MIT license.

🔫 Usage

import Zipper
let fileManager = FileManager()
let currentDirectoryURL = URL(fileURLWithPath: fileManager.currentDirectoryPath)

Zipping

var archiveURL = currentDirectoryURL.appendPathComponent("archive.zip")
var resourcesURL = currentDirectoryURL.appendPathComponent("directory")
// zip:
do {
try fileManager.zip(item: resourcesURL, to: archive)
} catch _ {}
// or:
guard let archive = Zipper(url: archiveURL, accessMode: .create) else  { return }
do {
try archive.zip(item: resourcesURL)
} catch {
}

Unzipping

var archiveURL = currentDirectoryURL.appendPathComponent("archive.zip")
var destinationURL = currentDirectoryURL.appendPathComponent("directory")
// unzip:
do {
try fileManager.createDirectory(at: destinationURL, withIntermediateDirectories: true, attributes: nil)
try fileManager.unzip(item: archiveURL, to: destinationURL)
} catch {
}
// or:
guard let archive = Zipper(url: archiveURL, accessMode: .read) else  { return }
do {
try archive.unzip(to: destinationURL)
} catch {
}

Accessing individual Entries

var archiveURL = currentDirectoryURL.appendPathComponent("archive.zip")
guard let archive = Zipper(url: archiveURL, accessMode: .read) else  { return }
guard let entry = archive["file.txt"] else { return }
var destinationURL = currentDirectoryURL.appendPathComponent("output.txt")
do {
try archive.extract(entry, to: destinationURL)
} catch {
}

Adding/Removing Entries

var archiveURL = currentDirectoryURL.appendPathComponent("archive.zip")
var fileURL = currentDirectoryURL.appendPathComponent("file.ext")

Adding:

guard let archive = Zipper(url: archiveURL, accessMode: .update) else { return }
do {
try archive.addEntry(with: fileURL.lastPathComponent, relativeTo: fileURL.deletingLastPathComponent())
} catch {
}

Removing:

guard let entry = archive["file.txt"] else { return }
do {
try archive.remove(entry)
} catch {
}

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100