有哪些不同的zlib压缩方法以及如何在Java的Deflater中强制使用默认值?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了有哪些不同的zlib压缩方法以及如何在Java的Deflater中强制使用默认值?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1931字,纯文字阅读大概需要3分钟。
内容图文
![有哪些不同的zlib压缩方法以及如何在Java的Deflater中强制使用默认值?](/upload/InfoBanner/zyjiaocheng/729/df5e918e7851487cba1697122adc66df.jpg)
我使用DeflaterOutputStream压缩数据作为专有存档文件格式的一部分.我正在使用jcraft zlib代码在另一端解压缩该数据.另一端是J2ME应用程序,因此我依赖第三方zip解压缩代码而不是标准Java库.
我的问题是一些文件压缩和解压缩就好了,而其他文件没有.
对于那些没有的,数据的第一个字节中的压缩方法似乎是’5′.
从我在zlib上的阅读中,我知道默认值’8’表示默认的deflate压缩方法.任何其他值似乎都是解压缩程序不可接受的.
我想知道的是:
>’5’表示什么?
>为什么DeflaterOutputStream在某些时候使用不同的压缩方法?
>我可以阻止它以某种方式这样做吗?
>是否有另一种方法来生成仅使用默认压缩方法的泄露数据?
解决方法:
它可能有助于精确了解您正在查看的内容.
在整个数据之前,通常有一个双字节的ZLIB头.据我所知,这些的第一个字节的低4位应始终为8.如果你在nowrap模式下初始化你的Deflater,那么你根本不会得到这两个字节(尽管你的其他库必须期待不要得到他们).
然后,在每个单独的数据块之前,有一个3位的块头(通知,定义为多个位,而不是整数个字节).可以想象,您可以使用以字节5开头的块,这将指示作为最终块的压缩块,或者使用字节8,这将是非压缩的非最终块.
当您创建DeflaterOutputStream时,您可以传入Deflater或您选择构造函数,并且在该Defalter上,您可以设置一些选项.该级别基本上是在查找数据中的重复模式时压缩使用的预测量;在offchance上,您可以尝试将其设置为非默认值,看看它是否对您的解压缩程序是否可以应对有任何影响.
策略设置(参见setStrategy()方法)可以在某些特殊情况下使用,告诉deflater仅应用huffman压缩.在您已经转换数据以使值的频率接近2的负幂(即霍夫曼编码最佳的分布)的情况下,这偶尔会有用.我不希望这个设置影响图书馆是否可以读取你的数据,但是你可能会尝试更改此设置.
如果它有用,我已经写了一些关于configuring Deflater的内容,包括在转换数据上使用仅霍夫曼压缩.我必须承认,无论你选择哪种方案,我都希望你的图书馆能够读取数据.如果您确定您的压缩数据是正确的(即ZLIB / Inflater可以重新读取您的文件),那么您可能会考虑使用另一个库…!
哦,并说出明显的出血,但无论如何我会提到它,如果你的数据是固定的,你当然可以把它放在罐子里,它将有效地放气/充气“免费”.具有讽刺意味的是,您的J2ME设备必须能够解码zlib压缩数据,因为这基本上就是jar所在的格式……
内容总结
以上是互联网集市为您收集整理的有哪些不同的zlib压缩方法以及如何在Java的Deflater中强制使用默认值?全部内容,希望文章能够帮你解决有哪些不同的zlib压缩方法以及如何在Java的Deflater中强制使用默认值?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。