System.IO.Compression下的2个类搞了好久,原因看注释
来源:互联网 发布:2017软件研发费用 编辑:程序博客网 时间:2024/04/29 23:07
System.IO.Compression下的2个类搞了好久,原因看注视
public static byte[] Compression(byte[] data, CompressionMode mode)
...{
DeflateStream zip = null;
try
...{
if (mode == CompressionMode.Compress)
...{
MemoryStream ms = new MemoryStream();
zip = new DeflateStream(ms, mode, true);
zip.Write(data, 0, data.Length);
zip.Close(); //在返回处理结果前一定要把流关闭,否则取得的数据不完整
return ms.ToArray(); //我比较习惯于在finally中关闭,这个问题弄了好久。用using的话要把return放在using范围外
}
else
...{
MemoryStream ms = new MemoryStream();
ms.Write(data, 0, data.Length);
ms.Flush();
ms.Position = 0;
zip = new DeflateStream(ms, mode, true);
MemoryStream os = new MemoryStream();
int SIZE = 1024;
byte[] buf = new byte[SIZE];
int l = 0;
do
...{
l = zip.Read(buf, 0, SIZE); //第一次读入时居然返回0字节
...{
DeflateStream zip = null;
try
...{
if (mode == CompressionMode.Compress)
...{
MemoryStream ms = new MemoryStream();
zip = new DeflateStream(ms, mode, true);
zip.Write(data, 0, data.Length);
zip.Close(); //在返回处理结果前一定要把流关闭,否则取得的数据不完整
return ms.ToArray(); //我比较习惯于在finally中关闭,这个问题弄了好久。用using的话要把return放在using范围外
}
else
...{
MemoryStream ms = new MemoryStream();
ms.Write(data, 0, data.Length);
ms.Flush();
ms.Position = 0;
zip = new DeflateStream(ms, mode, true);
MemoryStream os = new MemoryStream();
int SIZE = 1024;
byte[] buf = new byte[SIZE];
int l = 0;
do
...{
l = zip.Read(buf, 0, SIZE); //第一次读入时居然返回0字节
if (l == 0) l = zip.Read(buf, 0, SIZE);//只好加了这行代码
os.Write(buf, 0, l);
}while(l != 0);
zip.Close(); //在返回处理结果前一定要把流关闭,否则取得的数据不完整
return os.ToArray(); //我比较习惯于在finally中关闭,这个问题弄了好久。用using的话要把return放在using范围外
}
}
catch
...{
return null;
}
finally
...{
if (zip != null) zip.Close();
}
}
os.Write(buf, 0, l);
}while(l != 0);
zip.Close(); //在返回处理结果前一定要把流关闭,否则取得的数据不完整
return os.ToArray(); //我比较习惯于在finally中关闭,这个问题弄了好久。用using的话要把return放在using范围外
}
}
catch
...{
return null;
}
finally
...{
if (zip != null) zip.Close();
}
}
- System.IO.Compression下的2个类搞了好久,原因看注释
- C++看了好久
- 二位夫人看了好久的看了就爱上看了回复看了
- 好久没有看球赛了
- 学Java了,好久没看了
- 发现好久没来看看了
- 好久没看微型小说了
- 十句话,我竟然看了好久
- 好久没来了,来看看
- 好久没有来了,来看看哈
- 等了好久才解决的题,还是看了别人代码的,优先队列
- 好久没有去看XNA的进展了,不知道XNA现在怎么样了
- 看了好久java封装,终于得到了一个比较好的理解(非原创)
- 好久没更新了 晒下这些天的结果
- Java Mondrian3.2 的错误,围困了好久了
- [心情日记]本本卖了,好久没来看看了
- 看了一下博客,发现好久没有更新了
- 传了好久的照片
- 我在网站zegeniestudios做的测试
- jdbc学习(转载)
- 《Beyond Java》(一)
- c++中指针,指针的引用,指针的指针的区别
- 简单的模板实例,实现简单的运算符重载
- System.IO.Compression下的2个类搞了好久,原因看注释
- vc 学习点滴之终结篇
- 基于.net cf C# 实现杀进程
- VS2005中检测和更正 C/C++ 代码缺陷
- Microsoft SQL Server 数据库自动部署工具
- 如何调试程序的 Release 版本
- 《Linux内核完全注释》笔记(1)
- 接口的基础知识!
- 一个假设赚回18万