Swift 使用SSZipArchive实现文件的压缩、解压缩代码

通常我们为了节约流量,传输多个文件的时候需要将它们打包成Zip文件再传输,或者把下载下来的Zip包进行解压。本文介绍如何使用 ZipArchive 进行文件的压缩、解压操作。

1,SSZipArchive介绍

SSZipArchive是一个使用Objective-C编写的在iOS、Mac下的压缩、解压缩工具类。
GitHub地址:https://github.com/ZipArchive/ZipArchive
功能如下:

(1)解压zip文件
(2)解压带密码保护的zip文件
(3)创建zip文件
(4)添加新文件到zip文件中
(5)压缩文件
(6)使用一个名字来压缩NSData对象

2,SSZipArchive的安装配置

(1)将下载下来的 SSZipArchive 文件夹添加到项目中来

(2)创建桥接头文件 bridge.h 来包含需要引用的Objective-C头文件,内容如下:

#import "ZipArchive.h"

(3)在项目target -> Build Phases -> Link Binary With Libraries中点击加号,添加 libz.dylib 
 

3,使用样例

首先为了便于后面测试,我们先在项目中添加两张图片,以及两个压缩包文件(其中 test_password.zip 是带密码的压缩包,密码是:hangge.com)

同时定义一个方法返回目标路径(每次调用都会在程序的 Caches 下创建一个随机文件夹),为的是让每次压缩、解压缩的目标保存地址都不会冲突:

//在Caches文件夹下随机创建一个文件夹,并返回路径
func tempDestPath() -> String? {
    var path = NSSearchPathForDirectoriesInDomains(.CachesDirectory,
        .UserDomainMask, true)[0]
    path += "/\(NSUUID().UUIDString)"
    let url = NSURL(fileURLWithPath: path)
    
    do {
        try NSFileManager.defaultManager().createDirectoryAtURL(url,
            withIntermediateDirectories: true, attributes: nil)
    } catch {
        return nil
    }
    
    if let path = url.path {
        print("path:\(path)")
        return path
    }
    
    return nil
}

(1)解压普通zip文件

let zipPath   = NSBundle.mainBundle().pathForResource("test", ofType: "zip")
SSZipArchive.unzipFileAtPath(zipPath, toDestination: tempDestPath())

(2)解压带密码的zip文件

let zipPath2   = NSBundle.mainBundle().pathForResource("test_password", ofType: "zip")
 
do {
    try SSZipArchive.unzipFileAtPath(zipPath2, toDestination: tempDestPath(),
        overwrite: true, password: "hangge.com")
} catch {
}

(3)将文件打成压缩包

let files = [NSBundle.mainBundle().pathForResource("logo", ofType: "png")!,
    NSBundle.mainBundle().pathForResource("icon", ofType: "png")!]
 
let zipPath3 = tempDestPath()! + "/hangge.zip"
 
SSZipArchive.createZipFileAtPath(zipPath3, withFilesAtPaths: files)

当然我们也是可以给压缩包加上密码的:

SSZipArchive.createZipFileAtPath(zipPath3, withFilesAtPaths: files,
    withPassword: "hangge.com")

(4)将整个文件夹下的文件打成压缩包

//需要压缩的文件夹啊
let filePath:String = NSHomeDirectory() + "/Documents"
//先在该文件夹下添加一个文件
let image = UIImage(named: "logo.png")
let data:NSData = UIImagePNGRepresentation(image!)!
data.writeToFile(filePath + "/logo.png", atomically: true)
 
 
let zipPath5 = tempDestPath()! + "/hangge.zip"
SSZipArchive.createZipFileAtPath(zipPath5, withContentsOfDirectory: filePath)
   同样的,我门也可以添加密码:

 

SSZipArchive.createZipFileAtPath(zipPath6, withContentsOfDirectory: filePath,
    withPassword: "hangge.com") //带密码

时间: 2024-11-02 02:37:42

Swift 使用SSZipArchive实现文件的压缩、解压缩代码的相关文章

asp FSO在线压缩解压缩代码

asp FSO在线压缩解压缩代码 <% ''===================== ''FSO在线压缩解压缩 '自动生成HYTop.mdb ''===================== Sub AddToMdb(thePath)  On Error Resume Next  Dim Rs, Conn, Stream, ConnStr, adoCatalog, FsoX  Set FsoX = CreateObject("Scripting.FileSystemObject"

php在线文件与文件夹压缩实例代码

注明这款php教程文件压缩代码他要借助于zip.exe文件哦,所以我们要把zip.exe压缩文件给拿出来哦. <?php if ( !IsSet($_GET['dirname']) ) {  show_input_form() ; } else {  // check if empty  if ( empty($_GET['dirname']) )  {   hg_exit("请输入文件夹名!") ;  }  // check valid dirname  if ( FALSE

详解Nginx服务器的配置中开启文件Gzip压缩的方法_nginx

gzip(GNU- ZIP)是一种压缩技术.经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多.gzip的压缩页面需要浏览 器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析.浏览器那里不需要我们担心,因为目前的巨大多数浏览器都支持解析gzip 过的页面. Nginx的压缩输出有一组gzip压缩指令来实现.相关指令位于http{-.}两个大括号之间. 下面大致讲一下配置开启gzip压缩的方法: 1.Vim打开Nginx配置文件 v

如何用CZip/CUnzip类压缩/解压缩文件

本文介绍如何用CZip/CUnzip类压缩/解压缩文件,这个类使用gzip GNU源代码(gzip-1.2.4a).这是个免费软件,在GUN通用公共许可证(General Public License)条款下可以分发及修改此软件,关于这个通用公共许可证的详细条款请参考: http://www.vckbase.com/vckbase/uniondocs/gungpl.htm 目标动态库输出两个类: CZip(用于压缩文件) CUnzip (用于解压缩文件) 首先用文件名建立CZip 或 CUnzi

Asp.net利用RAR做文件压缩解压缩

如果服务器上安装了RAR程序,那么asp.net可以调用RAR实现文件压缩与解压缩. 不过要注意的是,由于Web程序不能直接调用客户端的程序(除非用ActiveX,ActiveX几乎被废弃),所以如果要想实现让用户把本地文件用网页解压缩只有把文件上传到服务器上再调用服务器上的RAR压缩,同理要解压缩本地的RAR文件可以把文件上传到服务器解压再拿回来. 本文讲怎么在服务器端的目录解压缩文件! 前台代码: <%...@ Page Language="C#" AutoEventWire

Linux中文件的压缩与解压缩命令操作示例集锦

  所谓压缩就是将原有的文件通过不同的编码技术进行运算,以减少数据存储所需要的空间,使用前再利用解压缩还原源文件的内容即可. 和windows一样,在linux下也存在多种压缩与解压缩方法. 1.zip压缩与解压缩 zip是最为广泛使用的压缩程序,经它压缩的文件会产生扩展名为zip的压缩文件,而且这种格式在多种系统上可以使用,像windows中的winzip 下面看一下在linux中如何建立zip文件. 我们在终端中输入zip会出现这个命令的一些介绍和参数的意义. 代码如下: xiaopeng@

C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩

ICSharpCode.SharpZipLib.dll下载地址 1.压缩某个指定目录下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志. #region 压缩logs目录下日志 public static void CompresslogDic() { try { string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "logs"; DirectoryInfo logsDic =

php使用ZipArchive函数实现文件的压缩与解压缩_php技巧

PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法这里就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下利用php zipArchive进行文件的压缩与解压缩的常用的示例供参考.一.解压缩zip文件 $zip=new ZipArchive;//新建一个ZipArchive的对象 if($zip->open('test.zip')===TRUE){ $zip->extra

详解linux下tar压缩解压缩文件夹的命令与参数_Linux

前言 tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,这篇文章仅仅列举常用的压缩与解压缩参数,下面直接先上三个常用命令,一起来看看吧 1.压缩当前目录下文件夹/文件test到test.tar.gz: tar -zcvf test.tar.gz test 2.解压缩当前目录下的file.tar.gz到file: tar -zxvf file.tar.gz 参数详解 五个命令中必选一个      -c: 建立压缩档案      -x:解压      -t:查看内容      -r: