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, 0, 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(0, 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编码!

时间: 2024-11-09 00:40:30

zip格式压缩、解压缩(C#)的相关文章

Java对zip格式压缩和解压缩

Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件.gzip在压缩文件中的数据时使用的就是zlib.为了保存与文件属性有关的信息,gzip需要在压缩文件(*.gz)中保存更多的头信息内容,而zlib不用考虑这一点.但gzip只适用于单个文件,所以我们在UNIX/Linux上经常看到的压缩包后缀都是*.tar.gz或

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

转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutputstream能够实现文件压缩,全部写入到zipoutputstream输入流中的数据,都会被ZIP格式压缩. 每一个被压缩的文件或者文件夹在zip文件里都相应一个zipentry对象,每一个zipentry都有一个name属性,表示它相对于zip文件文件夹的相对路径,对于文件夹,路径以“/“结尾,对

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

今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用. 一.压缩: /// <summary> /// 压缩 /// </summary> /// <param name="sourceDirectory"></param> /// <param name="targetZipName"></param> /// <param name=&qu

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

所有的压缩文件一定要写压缩格式的扩展名 .zip格式压缩 #压缩文件 zip 压缩文件名 源文件 #压缩目录 zip -r 压缩文件名 源目录 #解压缩 unzip 压缩文件 .gz格式压缩 #压缩为.gz格式的压缩文件 源文件会消失 gzip 源文件 #压缩为.gz格式的压缩文件 源文件保留 gzip -c 源文件 > 压缩文件 #压缩目录下所有的子文件 但不能压缩目录 gzip -r 目录 #解压缩 gzip -d 压缩文件 gunzip 压缩文件 .bz2格式压缩 #压缩为.bz2格式 不

安装mysql(zip格式安装包)

一. zip格式,解压缩之后要进行配置.解压之后可以将该文件夹改名,放到合适的位置,比如把文件夹改名为MySQL Server 5.6(文件夹 MySQL Server 5.6 下面就是 bin, data,my-default.ini 等) 二. 我的电脑->属性->高级->环境变量选择PATH,在其后面添加你的 mysql bin文件夹的路径,比如:C:\Program Files\MySQL\ MySQL Server 5.6\bin 三. 配置完环境变量之后先别忙着启动mysql

Java实现文件压缩与解压[zip格式,gzip格式]

Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还收录了一些能读写压缩格式流的类.要想提供压缩功能,只要把它们包在已有的I/O类的外面就行了.这些类不是Reader和Writer,而是Inpu

zend framework将zip格式的压缩文件导入并解压到指定文件

html代码 <pre class="php" name="code"><fieldset> <legend>批量导入学生照片</legend> <form enctype="multipart/form-data" action="/Import/importstuimg" method="post"> 导入照片压缩包文件:<input v

Qt之zip压缩/解压缩(QuaZIP)

摘要: 简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开. 简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开. Qt中提供了qCompress/qUncompress来进行文件的压缩与解压,但存在

linux操作系统上的gz, bz2, xz, zip, 格式的压缩命令以及tar用法

每种压缩的压缩算法不同,压缩比也会不同 gzip: 压缩文件为 .gz 格式的,后缀亦是如此 gzip /PATH/TO/SOMEFILE:压缩完成后会删除原文件,压缩后的文件以源文件命名,并且自动添加后缀 gunzip : 解压 .gz 格式的文件,解压缩后会删除原文件 zcat : 不解压 .gz 文件的情况下,查看文本文件的内容 ------------------------------------------------------------------ bzip2: 压缩文件为