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