(一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
来源:互联网 发布:剑三花爹数据 编辑:程序博客网 时间:2024/05/21 04:00
MineType
简介
文件在网络上以二进制流的方式传播,为了区分不同的文件类型,用MineType来标明。
为什么要获取
文件的拓展名较短,比较好记,但是MineType是很长的,比如docx
拓展名的MineType是application/vnd.openxmlformats-officedocument.wordprocessingml.document
,因此比较合适的方案是根据拓展名直接得到MineType。
怎么做
比较幸运,通过URLConnection的响应体response就能拿到MineType,我们只需要把获取本地文件包装成一个URL请求,然后拿到response即可,代码如下:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"docx"];NSURLRequest *request = [NSURLRequest requestWithURL:url];[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { NSLog(@"%@",response.MIMEType);}];
文件的压缩与解压
第三方框架
SSZipArchive是一个用于ZIP压缩与解压的第三方框架,可作为工具类使用,十分方便。
导入
下载完毕后,将minizip文件夹与SSZipArchive类文件导入工程,并且添加动态库libz.dylib(在Build Phases的Link Binary With Libraries中添加)。
使用
通过类方法createZipFileAtPath:withFilesAtPaths:和unzipFileAtPath:toDestination:分别可以实现压缩和解压。假设现在工程中有4_7inch1.jpg~4_7inch4.jpg四个文件,下面的代码在触摸开始时对他们进行压缩,并保存在沙盒的Library/Caches中;在触摸结束时将其解压。
- 注意解压时应该指定一个目录,否则会在当前目录解压所有文件。
- 通过类方法的返回值可以判断操作是否成功。
代码如下:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSMutableArray *paths = [NSMutableArray array]; for (int i = 1; i <= 4; i++) { NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"4_7inch%d.jpg",i] ofType:nil]; [paths addObject:path]; } NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *outPath = [cachePath stringByAppendingPathComponent:@"imgs.zip"]; if([SSZipArchive createZipFileAtPath:outPath withFilesAtPaths:paths]){ NSLog(@"success"); } }- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *zipPath = [cachePath stringByAppendingPathComponent:@"imgs.zip"]; if ([SSZipArchive unzipFileAtPath:zipPath toDestination:[cachePath stringByAppendingPathComponent:@"imgs/"]]) { NSLog(@"success"); } }
0 0
- (一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
- ssziparchive 解压 和 压缩
- Cocos2d中利用SSZipArchive解压加密压缩包方法
- JAVA 获取文件MINETYPE
- SSZipArchive 解压前 获取压缩文件内的名字
- 利用ZipArchive库进行压缩和解压文件
- 利用SharpZipLib压缩、解压文件
- 利用哈夫曼树进行文本压缩及解压(步骤)
- iOS中SSZipArchive解压带中文名称乱码、解压失败、丢失文件的问题
- 使用Zlib库进行文件的压缩和解压
- 使用Zlib库进行文件的压缩和解压
- java 进行文件的压缩,解压,删除,拷贝操作
- ZipControl对文件进行压缩与解压的方法
- 使用dcm4che3对jpeg压缩的dcm文件进行解压
- SSZipArchive的简单使用,不解压的情况下获取文件名
- iOS压缩与解压框架SSZipArchive使用详解
- 利用SharpZipLib进行文件的压缩和解压缩
- 利用SharpZipLib进行文件的压缩和解压缩
- Centos7 安装Cobbler
- (转)Android之值得开发者(安卓)必备的十八大开发资源
- ios播放gif动画
- 遍历Map的四种方法
- huawei机试
- (一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
- OGNL表达式struts2标签“%,#,$”
- 【算法C++】十进制字符串转十六进制字符串
- C#实现多线程
- 解决IE8以上乱码
- 两个数据库进行数据比对(DataTable对比)
- Hihocoder 1236 Scores【分块+bitset】
- Matlab & Mathematica 解符号方程组
- mule有关软件下载地址