IT人
相关图书

.net2.0中,C#实现文件压缩和解压缩

编辑:未知 文章来源:互联网 发布日期:2007-3-14 人气:

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

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

C#实现:

压缩字符串

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;
        }

相关文章
    网友对“.net2.0中,C#实现文件压缩和解压缩”的评论
    已有位网友对本文发表评论,下面显示最近10条评论。 查看所有评论
    昵称:
    评论内容:
    Copyright ◎ 1998 - 2007 编程资料网 All Rights Reserved