本文实例讲述了C#实现压缩和解压缩的方法。分享给大家供大家参考,具体如下:

使用ICSharpCode.SharpZipLib.dll来压缩/解压(压缩效率比GZip要高一点)
public static class ZipUtil
{
/// <summary>
/// 压缩
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string Compress(string param)
{
byte[] data = System.Text.Encoding.UTF8.GetBytes(param);
//byte[] data = Convert.FromBase64String(param);
MemoryStream ms = new MemoryStream();
Stream stream = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(ms);
try
{
stream.Write(data, 0, data.Length);
}
finally
{
stream.Close();
ms.Close();
}
return Convert.ToBase64String(ms.ToArray());
}
/// <summary>
/// 解压
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string Decompress(string param)
{
string commonString = "";
byte[] buffer = Convert.FromBase64String(param);
MemoryStream ms = new MemoryStream(buffer);
Stream sm = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(ms);
//这里要指明要读入的格式,要不就有乱码
StreamReader reader = new StreamReader(sm, System.Text.Encoding.UTF8);
try
{
commonString = reader.ReadToEnd();
}
finally
{
sm.Close();
ms.Close();
}
return commonString;
}
}
使用GZip来压缩/解压缩(字符串)
public static class GZipUtil
{
public static string Zip(string value)
{
//Transform string into byte[]
byte[] byteArray = new byte[value.Length];
int indexBA = 0;
foreach (char item in value.ToCharArray())
{
byteArray[indexBA++] = (byte)item;
}
//Prepare for compress
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms,
System.IO.Compression.CompressionMode.Compress);
//Compress
sw.Write(byteArray, 0, byteArray.Length);
//Close, DO NOT FLUSH cause bytes will go missing...
sw.Close();
//Transform byte[] zip data to string
byteArray = ms.ToArray();
System.Text.StringBuilder sB = new System.Text.StringBuilder(byteArray.Length);
foreach (byte item in byteArray)
{
sB.Append((char)item);
}
ms.Close();
sw.Dispose();
ms.Dispose();
return sB.ToString();
}
public static string UnZip(string value)
{
//Transform string into byte[]
byte[] byteArray = new byte[value.Length];
int indexBA = 0;
foreach (char item in value.ToCharArray())
{
byteArray[indexBA++] = (byte)item;
}
//Prepare for decompress
System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms,
System.IO.Compression.CompressionMode.Decompress);
//Reset variable to collect uncompressed result
byteArray = new byte[byteArray.Length];
//Decompress
int rByte = sr.Read(byteArray, 0, byteArray.Length);
//Transform byte[] unzip data to string
System.Text.StringBuilder sB = new System.Text.StringBuilder(rByte);
//Read the number of bytes GZipStream red and do not a for each bytes in
//resultByteArray;
for (int i = 0; i < rByte; i++)
{
sB.Append((char)byteArray[i]);
}
sr.Close();
ms.Close();
sr.Dispose();
ms.Dispose();
return sB.ToString();
}
}
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。
# C#
# 压缩
# 解压缩
# Gzip
# Zip
# C#实现GZip压缩和解压缩入门实例
# C#实现rar压缩与解压缩文件的方法
# C#文件流进行压缩和解压缩的方法
# C# 利用ICSharpCode.SharpZipLib实现在线压缩和解压缩
# asp.net C#实现解压缩文件的方法
# C#实现文件压缩与解压的方法示例【ZIP格式】
# C#实现的文件压缩和解压缩类
# C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压功能
# C#自定义字符串压缩和解压缩的方法
# C#压缩或解压rar、zip文件方法实例
# 程序设计
# 相关内容
# 就有
# 感兴趣
# 数据结构
# 给大家
# 更多关于
# 所述
# 使用技巧
# 面向对象
# 高一点
# 讲述了
# FromBase64String
# Convert
# MemoryStream
# Stream
# ms
# GetBytes
# System
相关文章:
重庆网站制作公司哪家好,重庆中考招生办官方网站?
如何通过VPS建站无需域名直接访问?
自助网站制作软件,个人如何自助建网站?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
建站之家VIP精选网站模板与SEO优化教程整合指南
如何做网站制作流程,*游戏网站怎么搭建?
高防服务器租用如何选择配置与防御等级?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
长沙做网站要多少钱,长沙国安网络怎么样?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何在橙子建站上传落地页?操作指南详解
SQL查询语句优化的实用方法总结
网站制作员失业,怎样查看自己网站的注册者?
c# 在高并发场景下,委托和接口调用的性能对比
建站之星安全性能如何?防护体系能否抵御黑客入侵?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何用低价快速搭建高质量网站?
如何制作一个表白网站视频,关于勇敢表白的小标题?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
建站之星备案流程有哪些注意事项?
如何设计高效校园网站?
建站主机如何选?高性价比方案全解析
,有什么在线背英语单词效率比较高的网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
制作网站外包平台,自动化接单网站有哪些?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
如何在腾讯云服务器快速搭建个人网站?
高端建站如何打造兼具美学与转化的品牌官网?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
如何实现建站之星域名转发设置?
制作网站怎么制作,*游戏网站怎么搭建?
在线教育网站制作平台,山西立德教育官网?
C++中引用和指针有什么区别?(代码说明)
网站制作壁纸教程视频,电脑壁纸网站?
如何在香港免费服务器上快速搭建网站?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
香港网站服务器数量如何影响SEO优化效果?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何在七牛云存储上搭建网站并设置自定义域名?
如何快速上传建站程序避免常见错误?
网站企业制作流程,用什么语言做企业网站比较好?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
建站主机系统SEO优化与智能配置核心关键词操作指南
香港服务器网站卡顿?如何解决网络延迟与负载问题?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
详解jQuery停止动画——stop()方法的使用
*请认真填写需求信息,我们会在24小时内与您取得联系。