[.Net 4] GZipStream / DeflateStream 新改善

舊有的GZipStream與DeflateStream有個問題,就是無法處理超過4G的資料流,在.Net 4針對了這個部份做了改善,沒有這個的限制,Stream類別也有加入一些新功能,讓寫法更為簡潔.

舊有的GZipStream與DeflateStream有個問題,就是無法處理超過4G的資料流,在.Net 4針對了這個部份做了改善,沒有這個的限制,Stream類別也有加入一些新功能,讓寫法更為簡潔.

舊的寫法真的是又臭又長,然而這次Stream類別多了一個CopyTo(Stream)這個Function,所以帶來了不少的便利性,看一下.Net 4在壓縮檔案的寫法有何改善.


private void CompFile(string FileName)
{
    try
    {
        using (FileStream fs = File.OpenRead(FileName))
        {
            using (FileStream oFile = File.Create(new FileInfo(FileName).FullName + ".gz"))
            {
                using (GZipStream zipFile = new GZipStream(oFile, CompressionMode.Compress))
                {
                    fs.CopyTo(zipFile);
                    fs.Flush();
                    zipFile.Flush();
                }
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        MessageBox.Show("Done");
    }
}

就短短的這麼幾行Code,就可以完成檔案壓縮,不過在MSDN上所介紹的,「GZipStream與DeflateStream類別的壓縮演算法經過改善後,已經完成壓縮的資料不會再擴大。」這點在測試後,還是有這情況.

 

不過就寫法而言,真的簡潔許多.

 

參考:

MSDN Stream 方法