zip格式壓縮文件輔助類(ZipHelper)

  /// <summary>
    /// 壓縮解壓文件
    /// </summary>
    public class ZipHelper
    { /// <summary>
      /// 使用GZIP壓縮文件的方法
      /// </summary>
      /// <param name="sourcefilename"></param>
      /// <param name="zipfilename"></param>
      /// <returns></returns>
        public static bool GZipFile(string sourcefilename, string zipfilename)
        {
            bool blResult;//表示壓縮是否成功的返回結果
                          //爲源文件建立讀取文件的流實例
            var srcFile = File.OpenRead(sourcefilename);
            //爲壓縮文件建立寫入文件的流實例,
            var zipFile = new GZipOutputStream(File.Open(zipfilename, FileMode.Create));
            try
            {
                byte[] FileData = new byte[srcFile.Length];//建立緩衝數據
                srcFile.Read(FileData, 0, (int)srcFile.Length);//讀取源文件
                zipFile.Write(FileData, 0, FileData.Length);//寫入壓縮文件

                blResult = true;
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
                blResult = false;
            }
            srcFile.Close();//關閉源文件
            zipFile.Close();//關閉壓縮文件
            return blResult;
        }
        /// <summary>
        /// /使用GZIP解壓文件的方法
        /// </summary>
        /// <param name="zipfilename"></param>
        /// <param name="unzipfilename"></param>
        /// <returns></returns>
        public static bool UnGzipFile(string zipfilename, string unzipfilename)
        {
            bool blResult;//表示解壓是否成功的返回結果
            //建立壓縮文件的輸入流實例
            var zipFile = new GZipInputStream(File.OpenRead(zipfilename));
            //建立目標文件的流
            var destFile = File.Open(unzipfilename, FileMode.Create);
            try
            {
                int buffersize = 2048;//緩衝區的尺寸,通常是2048的倍數
                byte[] FileData = new byte[buffersize];//建立緩衝數據
                while (buffersize > 0)//一直讀取到文件末尾
                {
                    buffersize = zipFile.Read(FileData, 0, buffersize);//讀取壓縮文件數據
                    destFile.Write(FileData, 0, buffersize);//寫入目標文件
                }
                blResult = true;
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
                blResult = false;
            }
            destFile.Close();//關閉目標文件
            zipFile.Close();//關閉壓縮文件
            return blResult;
        }
    }
相關文章
相關標籤/搜索