分享

.Net2.0新增的对文件压缩代码-Binken‘s Blog

 幸福人生书苑 2006-09-07
System.IO.Compression 命名空间

注意:此命名空间在 .NET Framework 2.0 版中是新增的。

System.IO.Compression 命名空间包含提供基本的流压缩和解压缩服务的类。

 压缩字符串

public static string ZipString(string unCompressedString)
        {
          
            byte[] bytData = System.Text.Encoding.UTF8.GetBytes(unCompressedString);
            MemoryStream ms = new MemoryStream();
            Stream s = new GZipStream(ms, CompressionMode.Compress);
            s.Write(bytData, 0, bytData.Length);
            s.Close();
            byte[] compressedData = (byte[])ms.ToArray();           
            return System.Convert.ToBase64String(compressedData, 0, compressedData.Length);
        }

解压缩字符串
 

public static string UnzipString(string unCompressedString)
        {
            System.Text.StringBuilder uncompressedString = new System.Text.StringBuilder();
            byte[] writeData = new byte[4096];

            byte[] bytData = System.Convert.FromBase64String(unCompressedString);
            int totalLength = 0;
            int size = 0;

            Stream s = new GZipStream(new MemoryStream(bytData), CompressionMode.Decompress);
            while (true)
            {
                size = s.Read(writeData, 0, writeData.Length);
                if (size > 0)
                {
                    totalLength += size;
                    uncompressedString.Append(System.Text.Encoding.UTF8.GetString(writeData, 0, size));
                }
                else
                {
                    break;
                }
            }
            s.Close();
            return uncompressedString.ToString();
        }
压缩文件

 public static bool AddZip(string srcFilename, string zipFileName)
        {
            if (!File.Exists(srcFilename))
                return false;
            bool result;
            FileStream fs = null, output = null;
            GZipStream zipStream = null;
            try
            {
                fs = new FileStream(srcFilename, FileMode.Open, FileAccess.Read);               
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                fs.Close();
                if (!File.Exists(zipFileName))
                {
                    output = File.Create(zipFileName);
                    zipStream = new GZipStream(output, CompressionMode.Compress);
                    zipStream.Write(buffer, 0, buffer.Length);
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            catch(Exception)
            {
                result = false;
             }
            finally
            {
                if (zipStream != null)
                {
                    zipStream.Flush();
                    zipStream.Close();
                }
            }
            return result;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约