Swift-文件压缩和解压

项目中有时候需要文件下载解压,项目中选择了ZipArchive,实际使用也比较简单,直接调用解压和压缩方法即可.

压缩

`

@IBAction func zipAction(_ sender: UIButton) {
    let imageDataPath = Bundle.main.bundleURL.appendingPathComponent("FlyElephant").path
    
    zipPath = tempZipPath()
    
    let success = SSZipArchive.createZipFile(atPath: zipPath!, withContentsOfDirectory: imageDataPath)
    if success {
        print("压缩成功---\(zipPath!)")
    }
}`

解压

`

@IBAction func unZipAction(_ sender: UIButton) {
    guard let zipPath = self.zipPath else {
        return
    }
    
    guard let unzipPath = tempUnzipPath() else {
        return
    }
    
    let success = SSZipArchive.unzipFile(atPath: zipPath, toDestination: unzipPath)
    if !success {
        return
    }
    print("解压成功---\(unzipPath)")
    var items: [String]
    do {
        items = try FileManager.default.contentsOfDirectory(atPath: unzipPath)
    } catch {
        return
    }
    
    for (index, item) in items.enumerated() {
        print("\(index)--文件名称---\(item)")
    }
}`

压缩和解压路径:

`

func tempZipPath() -> String {
    var path = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]
    path += "/\(UUID().uuidString).zip"
    return path
}

func tempUnzipPath() -> String? {
    var path = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]
    path += "/\(UUID().uuidString)"
    let url = URL(fileURLWithPath: path)
    
    do {
        try FileManager.default.createDirectory(at: url, withIntermediateDirectories: true, attributes: nil)
    } catch {
        return nil
    }
    
    
    return url.path
}`

你可能感兴趣的:(Swift-文件压缩和解压)