[C#.NET][VB.NET] GZipStream / DeflateStream 壓縮 / 解壓縮

[C#.NET][VB.NET] GZipStream / DeflateStream 壓縮 / 解壓縮

.NET提供了兩種壓縮資料流一個是GZipStream,另一個是DeflateStream,使用壓縮資料流要注意幾項:

1.這兩個演算法最大只能對4G的資料進行壓縮。

2.如果想要將檔案分給其它人使用,且要讓它們能夠用ZIP解壓縮時,請用GZipStream。

 

壓縮檔案步驟:

1.引用System.IO及System.IO.Compression類別

2.開啟欲壓縮的檔案

//開啟來源檔
FileStream SourceFile = File.OpenRead(inFile);

3.建立壓縮後的檔案

 //建立目的地檔
FileStream DestnFile = File.Create(outFile);

 

4.引用壓縮資料流GZipStream,引用壓縮參數

//引用壓縮類別
GZipStream myGZip = new GZipStream(DestnFile, CompressionMode.Compress);

5.寫入資料至壓縮資料流

//設定讀被壓縮(來源檔)變數
int ByteFile = SourceFile.ReadByte();
while (ByteFile != -1)
{
       //寫入myGZip資料流(壓縮)
       myGZip.WriteByte((byte)ByteFile);
       ByteFile = SourceFile.ReadByte();
}

 

6.釋放資源

//釋放資源
myGZip.Dispose();
DestnFile.Dispose();
SourceFile.Dispose();

解壓縮檔案步驟:

1.引用System.IO及System.IO.Compression類別

2.開啟欲解壓縮的檔案

//開啟來源檔
FileStream SourceFile = File.OpenRead(inFile);

3.建立壓縮後的檔案

//建立目的地檔
FileStream DestnFile = File.Create(outFile);

4.引用壓縮資料流GZipStream,引用解壓縮參數

//引用解壓縮類別
GZipStream myGZip = new GZipStream(SourceFile, CompressionMode.Decompress);

5.寫入資料至目的地檔案

//設定讀解壓縮(來源檔)變數
int ByteFile = myGZip.ReadByte();
while (ByteFile != -1)
{
       //寫資料至目的地檔(解壓縮)
       DestnFile.WriteByte((byte)ByteFile);
       ByteFile = myGZip.ReadByte();
}

6.釋放資源

//釋放資源
myGZip.Dispose();
DestnFile.Dispose();
SourceFile.Dispose();

 

 

 

 

 

 

 

PS1.DeflateStream類別的用法跟GZipStream一樣,只要引用資料流的部份修改一下就行了。

PS2.附件內包含VB與C#的用法

範例下載:NET壓縮解壓縮.rar

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo