ZIP压缩

Perfect为开发者提供了一个以C语言库实现的迷你zip压缩工具箱,内容是一组非常方便的函数接口。使用时,请导入PerfectZip。

准备工作

对于MacOS用户,请使用homebrew安装minizip:

brew install minizip

在 Ubuntu下, 使用apt-get命令安装minizip:

apt-get install minizip

除PerfectLib 之外,还需要在Package.swift文件中说明当前项目对Perfect-Zip 的依存关系:

.Package(url: "https://github.com/PerfectlySoft/Perfect-Zip.git", versions: Version(0,0,0)..<Version(10,0,0))

使用 Perfect Zip

Perfect Zip函数库中只有两个核心函数:压缩文件和解压缩文件

声明Zip类实例

在开始压缩或者解压缩之前,首先需要创建zip类实例:

let myVar = Zip()

Zip 压缩

如果需要压缩一个文件,请使用.zipFiles(...)方法:/p>

zipFiles(
    paths: [String],
    zipFilePath: String,
    overwrite: Bool,
    password: String?
) -> ZipStatus

该方法调用后会返回一个ZipStatus枚举变量,用于说明压缩操作是成功还是失败。

参数说明:

  • paths: 用于保存待压缩文件所在路径信息的数组
  • zipFilePath: 压缩后文件的保存路径
  • overwrite: 如果压缩后的文件已经存在,本次压缩是否将已存在文件。此处如果设置为真,则覆盖;否则忽略。
  • password: 可选参数;如果需要对该压缩文件设置密码保护,则该字符串用于存储密码。

UnZip 解压缩

如果要解压缩一个文件,请使用.unzipFile(...)方法

unzipFile(
    source: String,
    destination: String,
    overwrite: Bool,
    password: String = ""
) -> ZipStatus

该方法调用后会返回一个ZipStatus枚举变量,用于说明解压缩操作是成功还是失败。

参数说明

  • source: 压缩文件的路径信息
  • destination: 解压缩文件的目标路径
  • overwrite: 如果目标路径已存在,是否需要覆盖。如果此处变量设置为真则覆盖;否则忽略
  • password: 可选参数;用于解压缩的密码。

ZipStatus 操作结果状态

压缩/解压操作返回结果枚举值 ZipStatus 参考如下:

  • .FileNotFound
  • .UnzipFail
  • .ZipFail
  • .ZipCannotOverwrite
  • .ZipSuccess

该枚举类型还包括一个 .description 变量,用于返回每个返回值所代表的具体含义。

  • .FileNotFound - "文件不存在"
  • .UnzipFail - "解压缩失败"
  • .ZipFail - "压缩失败"
  • .ZipCannotOverwrite - "无法覆盖目标文件"
  • .ZipSuccess - "操作成功"

使用方法

下面的源代码演示了如何压缩一个文件

import PerfectZip

let myZip = Zip()

let thisZipFile = "/path/to/ZipFile.zip"
let sourceDir = "/path/to/files/"

let ZipResult = myZip.zipFiles(
    paths: [sourceDir],
    zipFilePath: thisZipFile,
    overwrite: true, password: ""
)
print("压缩结果:\(ZipResult.description)")

下面的源代码演示了如何解压缩一个文件

import PerfectZip

let myZip = Zip()

let sourceDir = "/path/to/files/"
let thisZipFile = "/path/to/ZipFile.zip"

let UnZipResult = myZip.unzipFile(
    source: thisZipFile,
    destination: sourceDir,
    overwrite: true
)
print("解压缩结果:\(UnZipResult.description)")