压缩方法

        #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#)的更多相关文章

  1. Java用ZIP格式压缩和解压缩文件

    转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutput ...

  2. Java对zip格式压缩和解压缩

    Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格 ...

  3. 基于ICSharpCode.SharpZipLib.Zip的压缩解压缩

    原文:基于ICSharpCode.SharpZipLib.Zip的压缩解压缩 今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用. 一.压缩: /// ...

  4. Android zip文件压缩解压缩

    DirTraversal.java <P style="TEXT-ALIGN: left; PADDING-BOTTOM: 0px; WIDOWS: 2; TEXT-TRANSFORM ...

  5. zip unzip 压缩解压缩命令

    直接上例子: mkdir test1 touch test1/1.txt touch test1/2.txt zip -r test1.zip test1    #-r 参数是包含文件夹下的文件 un ...

  6. zip格式压缩文件辅助类(ZipHelper)

    /// <summary> /// 压缩解压文件 /// </summary> public class ZipHelper { /// <summary> /// ...

  7. 【linux学习笔记六】压缩 解压缩命令

    所有的压缩文件一定要写压缩格式的扩展名 .zip格式压缩 #压缩文件 zip 压缩文件名 源文件 #压缩目录 zip -r 压缩文件名 源目录 #解压缩 unzip 压缩文件 .gz格式压缩 #压缩为 ...

  8. 安装mysql(zip格式安装包)

    mysql下载地址:http://www.mysql.com/ 一. zip格式,解压缩之后要进行配置.解压之后可以将该文件夹改名,放到合适的位置,比如把文件夹改名为MySQL Server 5.6( ...

  9. java压缩/解压缩zip格式文件

    因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. }     ...

随机推荐

  1. NET SignalR 与 LayIM2.0

    ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(五) 之 加好友,加群流程,消息管理和即时消息提示的实现   前言 前前一篇留了个小问题,在上一篇中忘了写了,就是关于L ...

  2. 转:Qt 嵌入式开发环境搭建

    地址: http://www.cnblogs.com/lishixian/articles/3013897.html         作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅 ...

  3. iOS设备后台播放音乐方法

    iOS设备后台播放音乐方法 1 在设置Capabliites中打开Background Modes,选择Audio And AirPlay 2 在控制viewDidLoad中添加下面代码 AVAudi ...

  4. poj2425--A Chess Game

    题意:给定一棵有向图的树,有些节点上有石子,每次可以取一个石子向一个有向边移动,不能移动者负. Ans:树上nim,叶子节点nim为0,父亲节点递归儿子得到sg值,答案就是每个石子所在点的sg值异或和 ...

  5. 子查询有OR无法展开,改写成union

    SELECT A.*   FROM (SELECT CD.*,                nvl(CV.SUM_CI_BALANCE, 0) as SUM_CI_BALANCE,         ...

  6. Oracle Database 12c Using duplicate standby database from active database Created Active DataGuard

    primary database db_name=zwc, db_unique_name=zwc standby database db_name=zwc, db_unique_name=standb ...

  7. Android中各种onTouch事件

    Android里有两个类 android.view.GestureDetector android.view.GestureDetector.SimpleOnGestureListener 1) 新建 ...

  8. Spring整合Shiro做权限控制模块详细案例分析

    1.引入Shiro的Maven依赖 <!-- Spring 整合Shiro需要的依赖 --> <dependency> <groupId>org.apache.sh ...

  9. 布局神器:Flexbox

    最近的工作内容大多是移动端网页的开发,百分比布局,Media Queries,Bootstrap等常规的响应式/自适应的开发技术皆一一试过,但觉以上都不够灵活,所以,一直再尝试寻求更加灵活的精确的移动 ...

  10. iphone真机开发流程之--证书申请

    一.申请 1.进入ios开发者中心 http://www.apple.com.cn/developer/ios/index.html 2.点击登录 输入用户名和密码(前提:已经有Apple ID,且花 ...