c#里的解压缩

来源:互联网 发布:javascript 下拉刷新 编辑:程序博客网 时间:2024/04/27 20:28

 /// <summary>
        /// 功能:解压缩
        /// 作者:wthrose
        /// </summary>
        /// <param name="FileName"></param>
        /// <param name="OutFileName"></param>
        public void GZipDecompress(string FileName, string OutFileName)
        {
            FileStream infile, outfile;
            try
            {
                infile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                byte[] buffer = new byte[infile.Length];
                int count = infile.Read(buffer, 0, buffer.Length);
                infile.Close();

                MemoryStream ms = new MemoryStream();
                ms.Write(buffer, 0, buffer.Length);
                ms.Position = 0;
                GZipStream decompressedzipStream = new GZipStream(ms, CompressionMode.Decompress, true);
              
                MemoryStream output = new MemoryStream();
                byte[] buff = new byte[4096];
                int read = -1;
                read = decompressedzipStream.Read(buff, 0, buff.Length);
                while (read > 0)
                {
                    output.Write(buff, 0, read);
                    read = decompressedzipStream.Read(buff, 0, buff.Length);
                }
                decompressedzipStream.Close();
               
                outfile = new FileStream(OutFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
                outfile.Write(output.ToArray(), 0, output.ToArray().Length);               
                outfile.Close();
              
                ms.Close();
            }
            catch(Exception ex)
            {
                //this.listBox1.Items.Add(ex.ToString());
            }

        }
        /// <summary>
        /// 功能:压缩
        /// 作者:wthorse
        /// </summary>
        /// <param name="FileName"></param>
        /// <param name="OutFileName"></param>
        public void GZipCompress(string FileName,string OutFileName)
        {
            FileStream infile,outfile;
            try
            {
                infile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                byte[] buffer = new byte[infile.Length];
                int count = infile.Read(buffer, 0, buffer.Length);
                if (count != buffer.Length)
                {
                    infile.Close();
                    //this.listBox1.Items.Add("读取文件失败");
                    return;
                }
                infile.Close();
                MemoryStream ms = new MemoryStream();
                GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
                compressedzipStream.Write(buffer, 0, buffer.Length);

                compressedzipStream.Close();
              
                outfile = new FileStream(OutFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
                outfile.Write(ms.ToArray(), 0, ms.ToArray().Length);
                outfile.Close();
               
                ms.Close();
            }
            catch(Exception ex)
            {
                //this.listBox1.Items.Add(ex.ToString());
            } 

原创粉丝点击