Zipper
了解
🏵 简介
Zipper 是 Swift 中的简单 ZIP 处理。
📋 要求
类型 | 要求 | |
---|---|---|
平台 |
iOS |
9.0+ |
macOS |
10.11 |
|
tvOS |
9.0 |
|
watchOS |
2.0 |
|
Linux |
带有 `zlib` |
|
IDE |
Xcode |
10.2+ |
语言 |
Swift |
5+ |
📲 安装
手动
将 Zipper 目录中的所有文件复制到您的项目中。
🛌 依赖
N/A
❤️ 贡献
欢迎您 Fork 并提交 pull 请求。
🔖 许可证
Zipper
是开源软件,受 MIT
许可证的许可。
🔫 用法
import Zipper
let fileManager = FileManager()
let currentDirectoryURL = URL(fileURLWithPath: fileManager.currentDirectoryPath)
压缩
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 {
}
解压缩
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 {
}
访问单个条目
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 {
}
添加/删除条目
var archiveURL = currentDirectoryURL.appendPathComponent("archive.zip")
var fileURL = currentDirectoryURL.appendPathComponent("file.ext")
添加
guard let archive = Zipper(url: archiveURL, accessMode: .update) else { return }
do {
try archive.addEntry(with: fileURL.lastPathComponent, relativeTo: fileURL.deletingLastPathComponent())
} catch {
}
删除
guard let entry = archive["file.txt"] else { return }
do {
try archive.remove(entry)
} catch {
}