ioszip怎么解压_unzip解压命令

ioszip怎么解压_unzip解压命令最近做的一个东西中,需要从网络获取xml文件,但是该文件用了gzip压缩的。搜索一下有人说gzip压缩的用urlrequest可以自己解压,但是这必须从服务器返回的header中有accept-Encoding说明是gzip的。也就是用这句就可以实现自解压:[urlRequestaddValue:@”gzip”forHTTPHeaderField:@”Accept-Encodi

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近做的一个东西中,需要从网络获取xml文件,但是该文件用了gzip压缩的。搜索一 下有人说gzip压缩的用urlrequest可以自己解压,但是这必须从服务器返回的header中有accept-Encoding说明是gzip 的。也就是用这句就可以实现自解压:

[urlRequest addValue:@”gzip” forHTTPHeaderField:@”Accept-Encoding”];

这个在我的项目中没有作用,因为服务器返回的header中没有Accept-Encoding的说明。这就需要手动解压了!解压需要导入libz.1.2.3.dylib库,导入#import “zlib.h”

下面是解压的代码:

 

-(NSData *)uncompressZippedData:(NSData *)compressedData  

{  

 

    if ([compressedData length] == 0) return compressedData;  

 

    unsigned full_length = [compressedData length];  

 

    unsigned half_length = [compressedData length] / 2;  

    NSMutableData *decompressed = [NSMutableData dataWithLength: full_length + half_length];  

    BOOL done = NO;  

    int status;  

    z_stream strm;  

    strm.next_in = (Bytef *)[compressedData bytes];  

    strm.avail_in = [compressedData length];  

    strm.total_out = 0;  

    strm.zalloc = Z_NULL;  

    strm.zfree = Z_NULL;  

    if (inflateInit2(&strm, (15+32)) != Z_OK) return nil;  

    while (!done) {  

        // Make sure we have enough room and reset the lengths.  

        if (strm.total_out >= [decompressed length]) {  

            [decompressed increaseLengthBy: half_length];  

        }  

        strm.next_out = [decompressed mutableBytes] + strm.total_out;  

        strm.avail_out = [decompressed length] – strm.total_out;  

        // Inflate another chunk.  

        status = inflate (&strm, Z_SYNC_FLUSH);  

        if (status == Z_STREAM_END) {  

            done = YES;  

        } else if (status != Z_OK) {  

            break;  

        }  

 

    }  

    if (inflateEnd (&strm) != Z_OK) return nil;  

    // Set real length.  

    if (done) {  

        [decompressed setLength: strm.total_out];  

        return [NSData dataWithData: decompressed];  

    } else {  

        return nil;  

    }  

}

以上是一个网上很容易搜索到的解压方法,正确,但是有个问题,就是,原文章中提到了zip,导致容易认为也可以解压zip。但是 经过验证这个方法是无法解压zip格式的压缩文件的。  解压gzip文件还是相当好用的。 

标记一下,gzip和zip文件并不是一个扩展名那么简单,压缩算法上有很大差异。 只是很多压缩软件做了屏蔽,让人感觉不到他们的差别了。  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197205.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php开发工程师面试题知识点总结(二)–基础篇

    php开发工程师面试题知识点总结(二)–基础篇

    2022年2月12日
    50
  • 中国超级计算机的发展过程_超级计算机最新发展史

    中国超级计算机的发展过程_超级计算机最新发展史截至2009年初的数据过去,超级计算机主要用于军事,科学和航空航天等高端领域.如今,超级计算机已进入平民时代中国计算机发展,与人们的生活密不可分.随着中国第一台超级计算机“魔方”跻身世界前十名,中国逐渐成为超级计算机的强国.超级计算机将更频繁地扮演平民的“行军”,进入家庭,促进公共服务设施,甚至帮助人们治愈目前无法治愈的疾病……项目总投资:超过100亿元项目期限:1975年至今中国超级计…

    2022年10月19日
    4
  • onshow「建议收藏」

    onshow「建议收藏」当小程序启动或者从后台重新进入的时候会触发事件

    2022年6月29日
    21
  • Shell常用命令整理

    Shell常用命令整理

    2021年10月7日
    36
  • navicat12注册机生成相应注册码

    navicat12注册机生成相应注册码转自:http://blog.sina.com.cn/s/blog_1885d23df0102yjw9.html navicat注册机是针对nacicat公司开发的软件而制作的一款激活工具,能够生成相对应的注册码和激活码,不仅能够支持激活nacicat11系列软件,同时可以激活nacicat12系列软件,具体可以激活navicat12formysql、navicat12fo…

    2022年10月13日
    4
  • 【算法】素数(质数)判断方法「建议收藏」

    【算法】素数(质数)判断方法「建议收藏」素数(质数)的判断在算法问题中经常遇到,这里小结几种常用的判断方法。首先,我们来看一下素数(质数)的定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。我们可以从它的定义得到判断素数的第一个方法:从2到n-1,判断是否存在能被n整除的数,既(n%i==0,2<=i<=n-1),如果有就不是素数,否则为素数。(这里为了比

    2022年6月18日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号