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文件并不是一个扩展名那么简单,压缩算法上有很大差异。 只是很多压缩软件做了屏蔽,让人感觉不到他们的差别了。  

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • em算法在高斯混合模型中的应用_高斯分布概率计算公式

    em算法在高斯混合模型中的应用_高斯分布概率计算公式一个例子高斯混合模型(GaussianMixedModel)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。如图1,图中的点在我们看来明显分成两个聚类。这两个聚类中的点分别通过两个不同的正态分布随机生成而来。但是如果没有GMM,那么只能用一

    2022年10月21日
  • oraclejobschedulerorcl禁用_oracledbconsoleorcl找不到

    oraclejobschedulerorcl禁用_oracledbconsoleorcl找不到AboutThisdocumentcoversinformationabouttheSBCSetup.ClickheretoexpandTableofContentsIntroductionBelowyou’llfindastepbystepsetupforinstallingFSasaSBC.TheLCRengineisprovide…

  • 匈牙利命名法[通俗易懂]

    匈牙利命名法[通俗易懂]匈牙利命名法:广泛应用于象MicrosoftWindows这样的环境中。Windows编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的Microsoft程序员查

  • python后缀是啥_python文件后缀

    python后缀是啥_python文件后缀python文件的后缀名有:“.py”、“.py3”、“.pyc”、“.pyo”、“.pyd”、“.pyi”、“.pyx”、“.pyz”、“.pywz”、“.rpy”、“.pyde”、“.pyp”、“.pyt”。python文件后缀总结:(1).py:以py扩展名的文件是Python源码文件,由python.exe解释,可在控制台下运行。可用文本编辑器读写。(2).py3:Python…

  • imx8主频_5g网络和处理器有关系吗

    imx8主频_5g网络和处理器有关系吗ByToradex秦海1).简介NXPiMX8已经正式发布,相较于之前NXPi.MX系列的主力产品iMX6,其性能有了大幅提升,本文就针对网络接口对NXPiMX8和iMX6两款ARM处理器进行对比测试。本文演示所使用的ARM平台来自Toradex基于NXPiMX8SoC的ApalisiMX8ARM核心板和基于NXPiMX6QSoC的ApalisiMX6…

    2022年10月21日
  • java interface有多个implement的情况下,@Inject调用实现类的选择

    java interface有多个implement的情况下,@Inject调用实现类的选择javainterface有多个implement的情况下,@Inject调用实现类的选择

    2022年10月19日

发表回复

您的电子邮箱地址不会被公开。

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