Latest 1.0.2
Homepage https://github.com/Meniny/Zipper
License MIT
Platforms ios 9.0, osx 10.11, tvos 9.0, watchos 2.0
Authors

Fire

VersionAuthorBuild PassingSwift
PlatformsMIT
Cocoapods

Zipper is a library to create, read and modify ZIP archive files, written in Swift.

Requirements

  • iOS 9.0+
  • macOS 10.11+
  • tvOS 9.0+
  • watchOS 2.0+
  • Linux (with zlib)
  • Xcode 8.0+
  • Swift 3.0+

Installation

CocoaPods

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'YOUR_TARGET_NAME' do
    pod 'Zipper'
end

Contribution

You are welcome to fork and submit pull requests.

License

Zipper is released under the MIT License.

Usage

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

Latest podspec

{
    "name": "Zipper",
    "version": "1.0.2",
    "license": "MIT",
    "summary": "Effortless ZIP Handling in Swift",
    "homepage": "https://github.com/Meniny/Zipper",
    "social_media_url": "http://meniny.cn/",
    "authors": {
        "Elias Abel": "[email protected]"
    },
    "source": {
        "git": "https://github.com/Meniny/Zipper.git",
        "tag": "1.0.2"
    },
    "platforms": {
        "ios": "9.0",
        "osx": "10.11",
        "tvos": "9.0",
        "watchos": "2.0"
    },
    "source_files": "Zipper/Source/*",
    "public_header_files": "Zipper/Source/*.h",
    "pushed_with_swift_version": "3.0"
}

Pin It on Pinterest

Share This