c#中关于压缩数据流和解压数据流的实现
2014-08-26 19:03
337 查看
c#中压缩数据流的方法,其实就是把一个对象压缩为byte数组
在网上找了很久没有找到自己满意的方法,有一些方法是可以压缩但是不是我想要的效果
这个是我找到的一个可以将任何数据转为压缩的二进制流然后解压的
这是另外一种
这三种都可以,但是第一种才是我想要的效果,可以把流压缩了,在解压!
主要用于 网络传输中包的编解码
在网上找了很久没有找到自己满意的方法,有一些方法是可以压缩但是不是我想要的效果
//long value = 100; string value = "this is test!this is test!12312312333333333333333333333333333333333333333333333333333333333333333333333333333"; var ms = new System.IO.MemoryStream(); var bw = new System.IO.BinaryWriter(ms, System.Text.Encoding.Unicode); bw.Write(value); //byte[] buf = ms.ToArray(); var dest = new System.IO.MemoryStream(); GZipStream zipStream = new GZipStream(dest, CompressionMode.Compress, true); byte[] buf = new byte[1024]; int len; ms.Seek(0, SeekOrigin.Begin); while ((len = ms.Read(buf, 0, buf.Length)) > 0) { zipStream.Write(buf, 0, len); } //zipStream.Write(buf, 0, buf.Length);//可以 zipStream.Close(); bw.Close(); ms.Close(); byte[] cb = dest.ToArray(); var tmp = new System.IO.MemoryStream(); tmp.Write(cb, 0, cb.Length); tmp.Seek(0, SeekOrigin.Begin); var dest2 = new System.IO.MemoryStream(); GZipStream zipStream2 = new GZipStream(tmp, CompressionMode.Decompress, true); byte[] buf2 = new byte[1024]; int len2; while ((len2 = zipStream2.Read(buf2, 0, buf2.Length)) > 0) { dest2.Write(buf2, 0, len2); } //zipStream2.CopyTo(dest2); //可以 zipStream2.Close(); dest2.Seek(0, SeekOrigin.Begin); var br = new System.IO.BinaryReader(dest2, System.Text.Encoding.Unicode); //long t = br.ReadInt64(); string t = br.ReadString();
这个是我找到的一个可以将任何数据转为压缩的二进制流然后解压的
string value = "this is test!12312312333333333333333333333333333333333333333333333333333333333333333333333333333"; byte[] b=Encoding.Default.GetBytes(value); MemoryStream ms = new MemoryStream(); GZipStream zip = new GZipStream(ms, CompressionMode.Compress); zip.Write(b, 0, b.Length); zip.Close(); byte[] cb=ms.ToArray(); MemoryStream tempMs = new MemoryStream(); MemoryStream dms = new MemoryStream(cb); GZipStream dzip = new GZipStream(dms, CompressionMode.Decompress); dzip.CopyTo(tempMs); dzip.Close(); byte[] db = tempMs.ToArray(); string ds=Encoding.Default.GetString(db);
这是另外一种
long value = 100; var ms = new System.IO.MemoryStream(); var bw = new System.IO.BinaryWriter(ms, System.Text.Encoding.Unicode); bw.Write(value); bw.Close(); byte[] buf=ms.ToArray(); ms.Close(); var ms2 = new System.IO.MemoryStream(); ms2.Write(buf, 0, buf.Length); ms2.Seek(0, SeekOrigin.Begin); var br = new System.IO.BinaryReader(ms2, System.Text.Encoding.Unicode); long tmp=br.ReadInt64();
这三种都可以,但是第一种才是我想要的效果,可以把流压缩了,在解压!
主要用于 网络传输中包的编解码
相关文章推荐
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- 利用C#调用WINRAR实现压缩与解压
- Asp.net 2.0 C#实现压缩/解压功能
- 利用C#调用WINRAR实现压缩与解压
- 利用C#调用WINRAR实现压缩与解压
- 利用C#调用WINRAR实现压缩与解压
- C#中用SharpZipLib.dll实现压缩解压
- Asp.net 2.0 C#实现压缩/解压功能
- 转载:Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 [转=向作者‘肖相’无私共享精神致敬]
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- C#实现从FTP服务器下载压缩文件并解压.
- C#使用SharpZipLib压缩和解压文件3/3调用实现压缩和解压
- C#中用SharpZipLib.dll实现压缩解压
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- c#实现压缩和解压
- C#中用SharpZipLib.dll实现压缩解压2