有一个奇怪的问题--我的一个应用程序套件必须读取/写gzip--在Windows和Linux上都使用的压缩文件,而且我发现我在Linux上使用zlib生成的文件比我在Linux上使用GZipStream生成的文件大2-3倍。他们在任何一个平台上都能很好地阅读,所以我知道不管是哪个平台创建了文件,压缩都是正确的。问题是,文件是在不同时间通过网络传输的,很明显,文件大小是个问题。
我的问题是:
GZipStream并没有提供像zlib那样指定压缩级别的方法,但是我在zlib端使用的是最大压缩。假设GZipStream也是为了使用最大压缩而编写的,难道我不应该看到相对相同的文件大小吗?发布于 2011-09-28 13:07:44
答案是..。Linux版本从一开始就没有压缩数据。经过大量的调试才发现了导致这一错误的原因,但经过纠正后,这两种平台的大小已经相当了。
发布于 2011-06-30 22:31:09
我认为您之所以会遇到这种情况,不是因为所使用的压缩算法,而是因为文件是如何被压缩的。来自zLib手册:
“zlib格式被设计成紧凑和快速,可以在内存和通信通道上使用,gzip格式是为文件系统上的单文件压缩而设计的,在维护目录信息方面比zlib具有更大的头,并且使用与zlib不同的、更慢的检查方法。”
我认为所发生的事情是,您的linux机器上的文件被合并成一个文件,然后这个文件被压缩。在WIndows中,我认为它压缩了每个单独的文件,然后将它们存储到一个文件中。
这是我的理论,但没有什么能真正支持它。为了满足我的好奇心,我想过会儿在家里试一试。
https://stackoverflow.com/questions/6541669
复制相似问题