c#裏的解壓縮

 /// <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());
            } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章