c#利用zlib.net对文件进行deflate流压缩(和java程序压缩生成一样)
C#自带DeflateStream,生成后的文件和javat生成的不一样,搜索了一下,找到国外一篇文章:
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/65537603-d7db-4e66-b5e6-d08275a4e4c8/
也是同样的问题,其中的一个回复是:
The problem is that DeflateStream in c# does not use the same compression algorithm than Deflater in java(and probably objective C).
Instead, try to use the zlib.net library: http://www.componentace.com/zlib_.NET.htm
=====================================
下载引用zlib.net,调用CompressFile()方法,问题解决。
public static void CopyStream(System.IO.Stream input, System.IO.Stream output){byte[] buffer = new byte[2000];int len;while ((len = input.Read(buffer, 0, 2000)) > 0){output.Write(buffer, 0, len);}output.Flush();}private void compressFile(string inFile, string outFile){System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream, zlib.zlibConst.Z_DEFAULT_COMPRESSION);System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);try{CopyStream(inFileStream, outZStream);}finally{outZStream.Close();outFileStream.Close();inFileStream.Close();}}private void decompressFile(string inFile, string outFile){System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream);System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);try{CopyStream(inFileStream, outZStream);}finally{outZStream.Close();outFileStream.Close();inFileStream.Close();}}
转载于:https://www.cnblogs.com/gdjlc/archive/2012/11/07/2758694.html
c#利用zlib.net对文件进行deflate流压缩(和java程序压缩生成一样)相关推荐
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 Jtop
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本
#!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的jav ...
- java 解除文件占用_Java如何强制删除java程序占用的文件
在JAVA对文件的读写操作中,操作完以后将输入流和输出流及时关闭时很必要的.假如我们有时候忘记关闭了,又不知道在哪个地方去关闭,为了删除该文件,JAVA可以进行强制删除操作.可以使用如下代码进行强制删 ...
- JDK命令之java -- 用来执行字节码文件,即用来执行Java程序
文章目录 一.命令介绍 二.用法格式 三.常用选项 四.常用选项详解 -client,-server -hotspot -classpath,-cp -classpath -D=value -verb ...
- java class 文件分析_大概优秀的java程序员都要会分析class文件吧
相信大家在学java的时候都会听到这样的一些结论: enum 是一个类 泛型的实现使用了类型擦除技术 非静态内部类持有外部类的引用 需要将自由变量声明成final才能给匿名内部类访问 ... 初学的时 ...
- Java程序如何生成Jar、exe及安装文件
http://blog.csdn.net/luoweifu/article/details/7628006/ 一.用Eclipse生产Jar文件 首先,看一下我的项目的目录结构: 1,项目名字上面点右 ...
- IntelliJ IDEA如何直接打开运行Java文件(idea如何直接运行Java程序)
1.我们演示如何使用IDEA打开一个记事本编写的Java文件(其他Java文件操作相同),如下图: 打开之后如下图,无法运行程序. 2.需要设置一下目录结构,按下图操作: 注意:选择输出路径时不要和J ...
- 解决Java程序在MOTO E680i中声音文件播放
这几天一直在用MOTO SDK来开发一款用于Moto E680i的JAVA游戏,利用BLOG发表一些心得: MOTO系列手机中JAVA程序播放一个声音文件比较简单,但是用于交互式音效时就有问题了. 根 ...
- 完美解决Java程序在 MOTO E680i 中声音文件播放
这几天一直在用MOTO SDK来开发一款用于Moto E680i的JAVA游戏,利用BLOG发表一些心得: MOTO系列手机中JAVA程序播放一个声音文件比较简单,但是用于交互式音效时就有问题了. 根 ...
最新文章
- 广泛的信号处理链如何让语音助理“正常工作”
- 一个5节点的polardb mysql_POLARDB问题
- ajax解析json中的对象数组对象,在JQuery中检索json数组后获取json对象Ajax
- 使用 Skeleton Screen 提升用户感知体验
- 通用usb驱动libusb介绍和使用示例
- request.getRequestURL()和request.getRequestURI()区别
- 检查 ubuntu 版本_如何检查Ubuntu版本–快速简便的方法
- Typescript tsconfig
- win10 休眠设置无效_睡眠模式在Windows 10系统上不起作用?
- Reactive Extensions 初识
- Python argparse模块、argparse.ArgumentParser()用法解析
- unicode字符串解析
- sublime开发apicloud项更新apploader解决
- vivado 2018 下载地址
- Cortex-M3 (NXP LPC1788)之WDT窗口看门狗定时器
- 认识5G(一):5G 单天线阵面Type I码本(Type I Single Panel codebook)生成过程
- 测试从业人员的职业规划
- 电子设计(8)NPN和PNP三极管驱动LED电路
- 语音情感识别常见的声学特征
- 四年级下册计算机有错必改教案,小学四年级下册语文《步行18里》必
热门文章
- 用c语言赋值表示的例子,一起talk C栗子吧(第五回:C语言实例--数组巧妙赋值)...
- mysql表死锁查询
- display: flex的兼容性写法
- 网站建设对于哪些刚起步的企业是有必要的
- FineUI小技巧(3)表格导出与文件下载
- C++模板之一:函数模板.odt
- windows2003在打‘SP2’补丁时提示“拒绝访问”
- .net项目引用ActiveX控件注意点
- Bochs 调试命令
- 32位dll转64位工具_如何在64位系统中运行32位或16位程序