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里的.基本上还是比较好用的. 废话少说,直接上代码. } ...
随机推荐
- Java并发编程--多线程中的join方法详解
Java Thread中, join()方法主要是让调用该方法的thread在完成run方法里面的部分后, 再执行join()方法后面的代码 例如:定义一个People类,run方法是输出姓名年龄. ...
- Swift中数组集合-b
数组(Array)是一串有序的由相同类型元素构成的集合.数组中的集合元素是有序的,可以重复出现. 声明一个Array类型的时候可以使用下面的语句之一. var studentList1:Array&l ...
- Android手机SSH Client客户端推荐JuiceSSH
Windows上建立ssh服务器 参见: http://www.cnblogs.com/xred/archive/2012/04/21/2461627.html Android手机SSH Client ...
- Expression构建DataTable to Entity 映射委托
namespace Echofool.Utility.Common { using System; using System.Collections.Generic; using System.Dat ...
- cf D. Levko and Array
http://codeforces.com/contest/361/problem/D 用二分搜索相邻两个数的差的绝对值,然后用dp记录数改变的次数.dp[i]表示在i之前改变的次数,如果|a[i]- ...
- Codeforces 158E Phone Talks
http://codeforces.com/contest/158/problem/E 题目大意: 麦克是个名人每天都要接n电话,每通电话给出打来的时间和持续时间,麦克可以选择接或不接,但是只能不接k ...
- op+3g
https://forum.openwrt.org/viewtopic.php?id=44895 http://eko.one.pl/forum/viewtopic.php?id=10269 http ...
- pthread_mutex_init & 互斥锁pthread_mutex_t的使用
pthread_mutex_init l 头文件: #include <pthread.h> l 函数原型: int pthread_mutex_init( ...
- 关于as3实现对任何对象进行深刻复制的思考
无意中看到关于as3深度复制思考的文章,觉得不错,于是转来记录以后用到可以参考. 转载来源:http://xmchcly.iteye.com/blog/1307425,下面是转文: 通过 ByteAr ...
- 借助Net-Speeder对服务器进行优化
对于丢包情况较为严重的VPS,我们可以采用一些优化TCP协议的软件对服务器进行相应的优化操作,我在以前的文章中介绍过一款名叫锐速的软件,它可以很好的解决丢包问题,但是这个软件对于服务器内核 ...