zip格式压缩、解压缩(C#)
压缩方法
#region 压缩
/// <summary>
/// 压缩
/// </summary>
/// <param name="bytes">未被压缩的字节数据</param>
/// <returns></returns>
public static byte[] Compress(byte[] bytes)
{
if (bytes == null)
return null;
using (MemoryStream oStream = new MemoryStream()) //压缩
{
GZipStream zipStream = new GZipStream(oStream, CompressionMode.Compress);
zipStream.Write(bytes, , bytes.Length);
zipStream.Flush();
zipStream.Close();
return oStream.ToArray();
}
}
/// <summary>
/// 压缩
/// </summary>
/// <param name="dataOriginal">未被压缩的数据</param>
/// <returns></returns>
public static byte[] Compress(object dataOriginal)
{
if (dataOriginal == null)
return null;
byte[] bytes = null;
using (MemoryStream mStream = new MemoryStream()) //序列化成二进制数组
{
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(mStream, dataOriginal);
bytes = mStream.ToArray();
}
return Compress(bytes);
}
/// <summary>
/// 压缩字符串
/// </summary>
/// <param name="unZipData">未被压缩的数据</param>
/// <returns></returns>
public static string Compress(string unZipData)
{
if (string.IsNullOrEmpty(unZipData))
return null;
var bytes = Compress(unZipData as object);
if (bytes == null)
return null;
return Convert.ToBase64String(bytes); //一定要Base64,否则会出错
}
#endregion
解压方法
#region 解压缩
/// <summary>
/// 解压缩
/// </summary>
/// <param name="stream">流</param>
/// <returns></returns>
public static object Decompress(Stream stream)
{
stream.Seek(, SeekOrigin.Begin);
GZipStream unZipStream = new GZipStream(stream, CompressionMode.Decompress, true);
object dsResult = null;
BinaryFormatter bFormatter = new BinaryFormatter();
dsResult = bFormatter.Deserialize(unZipStream) as object;
unZipStream.Close();
return dsResult;
}
/// <summary>
/// 解压缩
/// </summary>
/// <param name="bytes">压缩后的字节数组</param>
/// <returns></returns>
public static object Decompress(byte[] bytes)
{
if (bytes == null)
return null;
using (MemoryStream mStream = new MemoryStream(bytes))
{
return Decompress(mStream);
}
}
/// <summary>
/// 解压缩字符串
/// </summary>
/// <param name="zipData">被压缩的字符串</param>
/// <returns></returns>
public static string Decompress(string zipData)
{
if (string.IsNullOrEmpty(zipData))
return null;
var bytes = Convert.FromBase64String(zipData); //一定要Base64,否则会出错
return Decompress(bytes) as string;
}
#endregion
字符串压缩、解压缩 字节数组和字符串的相互装换要用Base64编码!
zip格式压缩、解压缩(C#)的更多相关文章
- Java用ZIP格式压缩和解压缩文件
转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutput ...
- Java对zip格式压缩和解压缩
Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格 ...
- 基于ICSharpCode.SharpZipLib.Zip的压缩解压缩
原文:基于ICSharpCode.SharpZipLib.Zip的压缩解压缩 今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用. 一.压缩: /// ...
- Android zip文件压缩解压缩
DirTraversal.java <P style="TEXT-ALIGN: left; PADDING-BOTTOM: 0px; WIDOWS: 2; TEXT-TRANSFORM ...
- zip unzip 压缩解压缩命令
直接上例子: mkdir test1 touch test1/1.txt touch test1/2.txt zip -r test1.zip test1 #-r 参数是包含文件夹下的文件 un ...
- zip格式压缩文件辅助类(ZipHelper)
/// <summary> /// 压缩解压文件 /// </summary> public class ZipHelper { /// <summary> /// ...
- 【linux学习笔记六】压缩 解压缩命令
所有的压缩文件一定要写压缩格式的扩展名 .zip格式压缩 #压缩文件 zip 压缩文件名 源文件 #压缩目录 zip -r 压缩文件名 源目录 #解压缩 unzip 压缩文件 .gz格式压缩 #压缩为 ...
- 安装mysql(zip格式安装包)
mysql下载地址:http://www.mysql.com/ 一. zip格式,解压缩之后要进行配置.解压之后可以将该文件夹改名,放到合适的位置,比如把文件夹改名为MySQL Server 5.6( ...
- java压缩/解压缩zip格式文件
因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. } ...
随机推荐
- Linux cat和EOF的使用
在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...
- NOI2012 美食节
http://www.lydsy.com/JudgeOnline/problem.php?id=2879 费用流. 我们发现,每个厨师做的倒数第k道菜对总等待时间的贡献为k*做这道菜的时间. 将每个厨 ...
- struct2(一)第一个struct程序
说明:本系列是针对struct2学习过程,主要的目的: 1. 探索针对一个新的开源框架的学习过程. 2. 学习struct2,学习官方对struct2介绍的方法. 3.别把英语忘了. 1. 为了更加清 ...
- xdu_RainAndBow 鞍山打铁记
我们作为弱校xdu的七队(大四一支,大三四支,大二俩),本来都没指望今年可以出去,结果运气不错,学校得到几个激动名额, 于是我们激动地成功申请到了鞍山站的名额,嗯...可以出去旅游了. 不过我们毕竟太 ...
- hdu3849-By Recognizing These Guys, We Find Social Networks Useful:双连通分量
By Recognizing These Guys, We Find Social Networks Useful Time Limit: 2000/1000 MS (Java/Others) ...
- python部落刷题宝学到的内置函数
最近加入了python部落,感觉里面的刷题宝很有意思,玩了一下,知道了许多以前并不清楚的内置函数,然后感觉到快要记不住了,所以开始陈列一下 1.divmod(a,b):取a除以b的商和余数,功效等价于 ...
- [置顶] js对象
js中,一切事物都是对象.对象是一切的基础. 而具体到某一个对象时. 对象则是包含一组变量和函数的集合实例 我们先来中体会下je对象的全局. 接下来就具体揭开这个对象的面纱吧 ja对象分类 Funct ...
- PHP常用魔术方法(__toString魔术方法)
<?php //文件名:index.php define('a',__DIR__); include '/IMooc/Loader.php'; spl_autoload_register('\\ ...
- Window的匿名Closing 事件
group.Closing += (sender, e) => { try { Code here } } catch (Exception ex) { Exception here } } ...
- jquery.tochart.js
var _jq, _hc; var jqsrc = "http://code.jquery.com/jquery-1.7.min.js"; var hcsrc = "ht ...