博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
阅读量:5095 次
发布时间:2019-06-13

本文共 2118 字,大约阅读时间需要 7 分钟。

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);}];

文件的压缩与解压

第三方框架

是一个用于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");    }  }

转载于:https://www.cnblogs.com/aiwz/p/6154025.html

你可能感兴趣的文章
什么是publickeytoken及publickeytoken的作用
查看>>
深入理解计算机系统
查看>>
[置顶]新的博客在简书上!
查看>>
Spark 论文篇-大型集群上的快速和通用数据处理架构(中英双语)
查看>>
729. My Calendar I
查看>>
java实现,使用opencv合成全景图,前端使用krpano展示
查看>>
Hibernate的锁机制-总结
查看>>
Mysql报错:1172 - Result consisted of more than one row
查看>>
vue-cli目录结构介绍002
查看>>
offsetLeft、offsetTop、offsetWidth、offsetHeight
查看>>
树形dp
查看>>
git学习
查看>>
基于JavaBean,JSP实现登录并显示分页信息的小系
查看>>
QT5.3 杂记(转)
查看>>
如何跟开发就测试范围进行沟通?
查看>>
js模板引擎-art-template常用总结
查看>>
jQuery中的模拟操作
查看>>
红黑树的删除压力测试和完整性检查
查看>>
Ajax 分页
查看>>
关于GreenOdoo的一个Bug
查看>>