iOS - File Archive/UnArchive 文件压缩/解压
1、ZipArchive 方式
ZipArchive 只能对 zip 类文件进行压缩和解压缩
GitHub 网址:https://github.com/ZipArchive/ZipArchive
ZipArchive 使用 ARC
添加 ZipArchive
// 添加第三方库文件
ZipArchive // 包含系统动态库
libz.tbd (libz.dylib) // 包含头文件
#import "ZipArchive.h"
ZipArchive 压缩
文件压缩
// 目标路径
NSString *destinationFilePath = @"/Users/JHQ0228/Desktop/test.zip"; // 源路径,待压缩的文件
NSArray *resourcesFilePaths = @[@"/Users/JHQ0228/Desktop/test1.rtf",
@"/Users/JHQ0228/Desktop/test2.rtf"]; BOOL result = [SSZipArchive createZipFileAtPath:destinationFilePath
withFilesAtPaths:resourcesFilePaths];
文件夹压缩
// 目标路径
NSString *destinationFilePath = @"/Users/JHQ0228/Desktop/test.zip"; // 源路径,待压缩的文件夹
NSString *resourcesDirPath = @"/Users/JHQ0228/Desktop/test"; BOOL result = [SSZipArchive createZipFileAtPath:destinationFilePath
withContentsOfDirectory:resourcesDirPath];
ZipArchive 解压缩
普通解压
// 源路径,待解压缩的文件
NSString *resourcesFilePath = @"/Users/JHQ0228/Desktop/test.zip"; // 目标路径
NSString *destinationDirPath = @"/Users/JHQ0228/Desktop/test"; BOOL result = [SSZipArchive unzipFileAtPath:resourcesFilePath
toDestination:destinationDirPath];
密码解压
// 源路径,待解压缩的文件
NSString *resourcesFilePath = @"/Users/JHQ0228/Desktop/test.zip"; // 目标路径
NSString *destinationDirPath = @"/Users/JHQ0228/Desktop/test"; BOOL result = [SSZipArchive unzipFileAtPath:resourcesFilePath
toDestination:destinationDirPath
overwrite:YES
password:@"password"
error:nil];
协议解压
// 源路径,待解压缩的文件
NSString *resourcesFilePath = @"/Users/JHQ0228/Desktop/test.zip"; // 目标路径
NSString *destinationDirPath = @"/Users/JHQ0228/Desktop/test"; BOOL result = [SSZipArchive unzipFileAtPath:resourcesFilePath
toDestination:destinationDirPath
delegate:self];
协议密码解压
// 源路径,待解压缩的文件
NSString *resourcesFilePath = @"/Users/JHQ0228/Desktop/test.zip"; // 目标路径
NSString *destinationDirPath = @"/Users/JHQ0228/Desktop/test"; BOOL result = [SSZipArchive unzipFileAtPath:resourcesFilePath
toDestination:destinationDirPath
overwrite:YES
password:@"password"
error:NULL
delegate:self];
协议方法
- (void)zipArchiveProgressEvent:(unsigned long long)loaded total:(unsigned long long)total { NSLog(@"%f", (float)loaded/total);
}
2、SARUnArchiveANY 方式
SARUnArchiveANY 可以对 .zip, .rar, .7z 类文件进行压缩和解压缩。
SARUnArchiveANY 使用 ARC
添加 SARUnArchiveANY
// 添加第三方库文件
SARUnArchiveANY // 包含系统动态库
libz.tbd (libz.dylib) // 包含头文件
#import "SARUnArchiveANY.h"
#import "LZMAExtractor.h"
SARUnArchiveANY 解压缩
- (void)unZip {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Zip_Example" ofType:@"zip"];
NSString *destPath = [self applicationDocumentsDirectory];
[self unArchive:filePath andPassword:nil destinationPath:destPath];
} - (void)unRar {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"rar"];
NSString *destPath = [self applicationDocumentsDirectory];
[self unArchive:filePath andPassword:nil destinationPath:destPath];
} - (void)unZip_pwd {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Zip_Example_pwd" ofType:@"zip"];
NSString *destPath = [self applicationDocumentsDirectory];
[self unArchive:filePath andPassword:@"SARUnArchiveANY_ZIP" destinationPath:destPath];
} - (void)unRar_pwd {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example_pwd" ofType:@"rar"];
NSString *destPath = [self applicationDocumentsDirectory];
[self unArchive:filePath andPassword:@"SARUnArchiveANY_RAR" destinationPath:destPath];
} - (void)Unzip7z {
NSString *archiveFilename = @"example.7z";
NSString *archiveResPath = [[NSBundle mainBundle] pathForResource:archiveFilename ofType:nil];
NSAssert(archiveResPath, @"can't find .7z file");
NSString *destPath = [self applicationDocumentsDirectory];
[self unArchive:archiveResPath andPassword:nil destinationPath:destPath];
} - (void)unArchive: (NSString *)filePath andPassword:(NSString*)password destinationPath:(NSString *)destPath { NSAssert(filePath, @"can't find filePath"); SARUnArchiveANY *unarchive = [[SARUnArchiveANY alloc] initWithPath:filePath]; if (password != nil && password.length > 0) {
unarchive.password = password;
} if (destPath != nil) { // (Optional). If it is not given, then the file is unarchived in the same location of its archive/file.
unarchive.destinationPath = destPath;
} unarchive.completionBlock = ^(NSArray *filePaths) { NSLog(@"For Archive : %@", filePath); if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"US Presidents://"]]) { NSLog(@"US Presidents app is installed.");
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"US Presidents://"]];
} for (NSString *filename in filePaths) {
NSLog(@"File: %@", filename);
}
}; unarchive.failureBlock = ^(){
NSLog(@"Cannot be unarchived");
}; [unarchive decompress];
} - (void)handleFileFromURL:(NSString *)filePath {
NSLog(@"********* FILES FROM THE OTHER APPS *********");
[self unArchive:filePath andPassword:nil destinationPath:nil];
} - (NSString *) applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
iOS - File Archive/UnArchive 文件压缩/解压的更多相关文章
- Linux 之 文件压缩解压
文件压缩解压 参考教程:[千峰教育] 命令: gzip: 作用:压缩文件,只能是单个文件,不能是多个,也不能是目录. 格式:gzip file 说明:执行命令会生成file.gz,删除原来的file ...
- linux驱动系列之文件压缩解压小节(转)
转至网页:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通 ...
- 分享一个ASP.NET 文件压缩解压类 C#
需要引用一个ICSharpCode.SharpZipLib.dll using System; using System.Collections.Generic; using System.Linq; ...
- linux文件压缩解压命令
01-.tar格式解包:[*******]$ tar xvf FileName.tar打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩! ...
- Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接
作业一:1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt2) 将用户信息数据库文件和用户 ...
- linux命令:压缩解压命令
压缩解压命令:gzip 命令名称:gzip 命令英文原意:GNU zip 命令所在路径:/bin/gzip 执行权限:所有用户 语法:gzip 选项 [文件] 功能描述:压缩文件 压缩后文件格式:g ...
- c#自带压缩类实现的多文件压缩和解压
用c#自带的System.IO.Compression命名空间下的压缩类实现的多文件压缩和解压功能,缺点是多文件压缩包的解压只能调用自身的解压方法,和现有的压缩软件不兼容.下面的代码没有把多文件的目录 ...
- 对称加密之AES、压缩解压以及压缩加密解密解压综合实战
AES 压缩解压 压缩加密解密解压 对称加密: 就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 因此加密的安 ...
- linux笔记:linux常用命令-压缩解压命令
压缩解压命令:gzip(压缩文件,不保留原文件.这个命令不能压缩目录) 压缩解压命令:gunzip(解压.gz的压缩文件) 压缩解压命令:tar(打包压缩目录或者解压压缩文件.打包的意思是把目录打包成 ...
随机推荐
- JDK结构介绍
dt.jar和tools.jar位于:{Java_Home}/lib/下, 而rt.jar位于:{Java_Home}/jre/lib/下, 其中: (1) rt.jar是JAVA基础类库,也就是你在 ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.2.更换主题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- iOS 开发 证书总结 开发证书和生产证书的区别
IOS开发 证书总结 开发者证书 ------>> 开发证书是你在真机推送时 用得, 生产证书是app 上架之后 推送给用户用的 首先你必须获得apple开发者证书,上图这个文件就是 ...
- React-Native入门指导之iOS篇
React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JSX在React-Native中的应用 六.事 ...
- 有关对字符串的处理,需要用到List时的简化写法
这是项目中的需要根据ComputerName来获取IP的一个方法,如果出现多个ComputerName,需要将多个ComputerName的字符串以“:”分开,传进方法中,然后再处理不同的Name,然 ...
- 读取EXCEL
package com.wxgs.ch04; import java.io.File;import java.io.IOException; import jxl.Cell;import jxl.Sh ...
- 用ThreadLocal为线程生成唯一标识及实现原理
1.在多线程编程中,有时候需要自动为每个启动的线程生成一个唯一标识,这个时候,通过一个ThreadLocal变量来保存每个线程的标识是最有效.最方便的方式了. 2.ThreadLocal 实例通常是类 ...
- Paratroopers
Paratroopers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7881 Accepted: 2373 Descript ...
- nylg 640 Geometric Sum
Geometric Sum 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 Compute (a + a^2 + … + a^n) mod m.(a+a2+…an)m ...
- reactjs入门到实战(一)---- hello world例子
React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西 ...