using System; using System.Collections.Generic; using System.Text;using System.IO; using System.IO.Compression; //使用壓縮類 class Test {staticvoid SaveCompressedFile(string filename, string data) {//創建一個 FileStream 對象 FileStream fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write); //創建一個 GZipStream 對象,Compress 表示壓縮基礎流。 GZipStream compressionStream = new GZipStream(fileStream, CompressionMode.Compress); //實現一個 write,使其以一種特定的編碼向流中寫入字符。 StreamWriter writer = new StreamWriter(compressionStream); writer.Write(data); writer.Close(); } staticstring LoadCompressedFile(string filename) {//創建一個 FileStream 對象 FileStream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read); //創建一個 GZipStream 對象,Decompress 表示解壓縮基礎流。 GZipStream compressionStream = new GZipStream(fileStream, CompressionMode.Decompress); //實現從字符串進行讀取 StreamReader reader = new StreamReader(compressionStream); string data = reader.ReadToEnd(); reader.Close(); return data; } publicstaticvoid Main(string[] args) { try { //定義文件路徑 string filename = @"c:/compressedFile.txt"; Console.WriteLine("Enter a string to compress (will be repeated 10 times):"); //再控制台上輸入文字 string sourceString = Console.ReadLine(); StringBuilder sourceStringMultiplier = new StringBuilder(sourceString.Length * 100); for (int i = 0; i < 100; i++) { sourceStringMultiplier.Append(sourceString); } sourceString = sourceStringMultiplier.ToString(); Console.WriteLine("Source data is {0} bytes long.", sourceString.Length); SaveCompressedFile(filename, sourceString); Console.WriteLine("/nData saved to {0}.", filename); FileInfo compressedFileData = new FileInfo(filename); Console.WriteLine("Compressed file is {0} bytes long.", compressedFileData.Length); string recoveredString = LoadCompressedFile(filename); recoveredString = recoveredString.Substring(0, recoveredString.Length / 100); Console.WriteLine("/nRecovered data: {0}", recoveredString); Console.ReadKey(); } catch (IOException ex) { Console.WriteLine("An IO exception has been thrown!"); Console.WriteLine(ex.ToString()); Console.ReadKey(); } }}