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

(一二九)获取文件的MineType、利用SSZipArchive进行压缩解压的更多相关文章

  1. .NET使用ICSharpCode.SharpZipLib压缩/解压文件

    SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...

  2. 【.Net Core】ZipFile类--文件的压缩解压

    NuGet引用官网自带的System.IO.Compression.ZipFile; var filename = "测试压缩解压文件"; var path = Directory ...

  3. linux驱动系列之文件压缩解压小节(转)

    转至网页:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通 ...

  4. 使用PHP对文件进行压缩解压(zip)

    使用虚拟主机进行文件上传时最常用的工具莫过于FTP了,但是使用FTP有一个弊端就是文件太多时上传或下载速度比较慢,如果上传时将文件打包,上传后在 空间解压缩,同样下载前将文件打包压缩以压缩包的形式下载 ...

  5. huffman压缩解压文件【代码】

    距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug.其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自 ...

  6. (转载)C#压缩解压zip 文件

    转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...

  7. linux查看文件夹大小,备份文件夹zip压缩解压

    linux查看文件夹大小,备份文件夹zip压缩解压 du -sh : 查看当前目录总共占的容量.而不单独列出各子项占用的容量 du -lh --max-depth=1 : 查看当前目录下一级子文件和子 ...

  8. 使用C#压缩解压rar和zip格式文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  9. 通过SharpZipLib来压缩解压文件

    在项目开发中,一些比较常用的功能就是压缩解压文件了,其实类似的方法有许多 ,现将通过第三方类库SharpZipLib来压缩解压文件的方法介绍如下,主要目的是方便以后自己阅读,当然可以帮到有需要的朋友更 ...

随机推荐

  1. [CODEVS 1288]埃及分数

    Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数. 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的. 对于一个分数a/ ...

  2. ●BZOJ 1444 [Jsoi2009]有趣的游戏

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1444题解.1: 概率dp,矩阵乘法,快速幂. 对所有串建立AC自动机, 那么如果在trie树 ...

  3. [POJ1741]树上的点对 树分治

    Description 给一棵有n个节点的树,每条边都有一个长度(小于1001的正整数). 定义dist(u,v)=节点u到节点v的最短路距离. 给出一个整数k,我们称顶点对(u,v)是合法的当且仅当 ...

  4. hdu 5534(dp)

    Input The first line contains an integer T indicating the total number of test cases. Each test case ...

  5. [BZOJ]1079 着色方案(SCOI2008)

    相邻色块不同的着色方案,似乎这道题已经见过3个版本了. Description 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够 ...

  6. 对中断的理解handle_level_irq【原创】

    如下为本人原创,在解决问题的过程中的一点心得,如果有描述不准确的地方还请各位指出,非常感谢 Linux内核版本:linux-4.9.18 曾有一次调试触摸屏的时候遇到如下的问题 /startup/mo ...

  7. python flask 基础入门

    1. Flask 中的Hello World! 在使用pycharm创建一个Flask项目后,将会默认创建一个flask的app,这里来讲下每行代码表示的意义,代码入下 from flask impo ...

  8. 数据结构之B树、B+树(二)---代码实现

    B-Tree | Set 1 (construct) Following is an example B-Tree of minimum degree 3. Note that in practica ...

  9. salesforce lightning零基础学习(二) lightning 知识简单介绍----lightning事件驱动模型

    看此篇博客前或者后,看一下trailhead可以加深印象以及理解的更好:https://trailhead.salesforce.com/modules/lex_dev_lc_basics 做过cla ...

  10. SVN与Git

    一:SVN是什么?SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到S ...