摘要:[Compression][Gzip] 壓縮注意事項
在網路上看了些論壇發問的例子後,發現有不少的例子在壓縮時是錯誤的,先看一下下面的例子是否正確:
public static byte[] Compress(byte[] originalData)
{
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream compress = new GZipStream(ms, CompressionMode.Compress))
{
compress.Write(originalData, 0, originalData.Length);
return ms.ToArray();
}
}
}
看起來好像正確,其實有個問題存在,
其實是看了MSDN提供的例子後,我也才發覺這個錯誤,
MSDN例子中沒有使用using關鍵字來釋放資源,而是使用Close方法來釋放資源,
而上面錯誤的地方就是在compress物件尚未釋放資源前,就將ms串流轉換成位元祖。
public static byte[] Compress(byte[] originalData)
{
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream compress = new GZipStream(ms, CompressionMode.Compress))
{
compress.Write(originalData, 0, originalData.Length);
}
return ms.ToArray();
}
}
by jgame2012