用Swift解压缩zip文件

时间:2016-07-05 11:52:34

标签: ios swift zip

我在Swift做了一个游戏,但我需要在我的网站上下载.zip文件,并在游戏中使用内容(图像)。 实际上,我下载.zip文件并将其存储在文档中,我需要将文件解压缩到相同的文档文件夹中。

我尝试过marmelroy的Zip,iOS 9压缩模块和tidwall的DeflateSwift,但这些都没有奏效。如果它与iOS 8兼容可能会很好。

4 个答案:

答案 0 :(得分:9)

我最近发布了一个Swift原生框架,允许您创建,读取和更新ZIP存档文件:ZIP Foundation
它使用内部使用libcompression来获得出色的压缩性能。

解压缩文件基本上只有一行:

try fileManager.unzipItem(at: sourceURL, to: destinationURL)

包含某些上下文的完整示例如下所示:

let fileManager = FileManager()
let currentWorkingPath = fileManager.currentDirectoryPath
var sourceURL = URL(fileURLWithPath: currentWorkingPath)
sourceURL.appendPathComponent("archive.zip")
var destinationURL = URL(fileURLWithPath: currentWorkingPath)
destinationURL.appendPathComponent("directory")
do {
    try fileManager.createDirectory(at: destinationURL, withIntermediateDirectories: true, attributes: nil)
    try fileManager.unzipItem(at: sourceURL, to: destinationURL)
} catch {
    print("Extraction of ZIP archive failed with error:\(error)")
}

README on GitHub包含更多信息。所有公共方法也可以通过Xcode快速帮助获得完整的文档。

我还写了一篇关于性能特征here的博客文章。

答案 1 :(得分:2)

我找到了以下名为Minizip的库。试试吧

您可以使用Zip framework使用Swift解压缩文件。简单写在Swift

示例代码

do {
    let filePath = NSBundle.mainBundle().URLForResource("file", withExtension: "zip")!
    let unzipDirectory = try Zip.quickUnzipFile(filePath) // Unzip
    let zipFilePath = try Zip.quickZipFiles([filePath], fileName: "archive") // Zip
}
catch {
  print("Something went wrong")
}

如果不适用于minizip,你可以使用ZipArchive,它不是用swift写的,而是用Objective-C

答案 2 :(得分:1)

我使用了SSZipArchive和一个桥接标题:

  1. 拖动&删除项目中的SSZipArchive目录
  2. 创建一个{PROJECT-MODULE-NAME} -Bridging-Header.h文件,其中包含 import" SSZipArchive.h"
  3. 在构建设置中,拖动Swift编译器中的桥接头 - 代码生成 - > Objective-C Bridging Header。
  4. 在Swift代码中使用SSZipArchive。

答案 3 :(得分:-2)

您可以使用

let unzipDirectory= try Zip.quickUnzipFile(filePath) //to unZip your folder.
  • 如果您需要更多帮助,可以获得一些好的website

  • 对我有帮助。

我希望问题能解决。