🗳A library to create, read and modify ZIP archive files, written in Swift.
Switch branches/tags
Nothing to show
Clone or download
Latest commit f0cd902 May 16, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Assets 1.1.0 May 16, 2018
Sample 1.1.0 May 16, 2018
Zipper 1.1.0 May 16, 2018
.gitignore 1.0.0 Jul 6, 2017
LICENSE.md 1.1.0 May 16, 2018
Package.swift 1.0.2 Jul 17, 2017
README.adoc 1.1.0 May 16, 2018
Zipper.podspec 1.1.0 May 16, 2018

README.adoc

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

9.3+

Language

Swift

4.1+

📲 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 {

}