一个用于读取和编辑 zip 压缩文件的库。
Zip 压缩文件是一种用于整理、压缩和加密文件集合的标准方法。它们被广泛用于将文件聚合、压缩和加密到单个可互操作的容器中。ZipArchive
提供对从内存或磁盘读取和写入 zip 压缩文件的支持。
要解析存储在磁盘上的 zip 压缩文件,请使用函数 ZipArchiveReader.withFile(_:process:)
。这将创建一个 ZipArchiveReader
,它可以在提供的闭包中使用,以从 zip 文件读取目录,然后读取单个文件。
let fileContents = try ZipArchiveReader.withFile("MyFile.zip") { reader in
let directory = try reader.readDirectory()
let fileHeader = directory.first { $0.filename == "File.txt"}
return try reader.readFile(fileHeader)
}
ZipArchiveWriter
用于写入 zip 压缩文件。 你可以使用 ZipArchiveWriter.withFile(_:options:process:)
来创建新的 zip 压缩文件或将文件追加到现有的 zip 压缩文件。 此函数有一个闭包参数,你可以在其中使用提供的 ZipArchiveWriter
将新文件添加到 zip 文件。 当你退出闭包时,zip 压缩文件将被完成,即目录和目录结尾部分将被写入磁盘,并且文件描述符将被关闭。 以下代码加载 zip 压缩文件 MyFile.zip,然后将一个名为 Hello.txt 的新文件追加到该压缩文件中。
try ZipArchiveWriter.withFile("MyFile.zip") { writer in
try writer.writeFile(filename: "Hello.txt", contents: .init("Hello, world!".utf8))
}
如果要创建新的 zip 压缩文件,可以调用 withFile("MyFile.zip", options: .create)
。
ZipArchive
支持传统的 PKZIP 加密方法。 你可以通过将密码参数添加到 ZipArchiveReader.readFile(_:password:)
来解密文件。 例如
try reader.readFile(fileHeader, password: "testing123")
你可以通过将密码添加到 ZipArchiveWriter.writeFile(filename:contents:password:)
来为文件添加加密。 例如
try writer.writeFile(filename: "Hello.txt", contents: fileContents, password: "testing123")
也可以使用 ZipArchiveReader
和 ZipArchiveWriter
从存储在内存中的 zip 压缩文件读取和写入数据。 可以从内存缓冲区构建 ZipArchiveReader
,然后以类似于磁盘上存储的压缩文件的方式读取其目录和文件。
let reader = try ZipFileReader(buffer: zipArchiveMemoryBuffer)
let directory = try reader.readDirectory()
let fileHeader = directory.first { $0.filename == "File.txt"}
let fileContents = try reader.readFile(fileHeader)
要写入内存中的 zip 压缩文件,可以从缓冲区创建 ZipFileWriter
。 当你想使用完整的目录创建最终的 zip 压缩文件时,可以调用 ZipFileWriter.finalizeBuffer()
,它将返回完整的 zip 压缩文件。
let writer = try ZipArchiveWriter(buffer: zipArchiveMemoryBuffer)
try writer.writeFile(filename: "Hello.txt", contents: fileContents, password: "testing123")
let zipBuffer = try writer.finalizeBuffer()
ZipArchive 目前支持
ZipArchive 支持 Apple OSs、Linux 和 Windows