[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