C# GZipStreamクラスでファイルの圧縮、解凍を行う

ソースコードを改訂しました。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Compression;

class Program
{
    public static void Main()
    {
        /////////////////////////////////////////////////////////////////////
        //圧縮
        String sourceFileName = @"test.txt";//元ファイルの名前
        String gzipFileName = @"test.gzip";//GZipで圧縮したファイルの名前
        
        //元ファイルからデータをすべて読み込む
        Byte[] buffer;
        using (FileStream ifs = new FileStream(sourceFileName, FileMode.Open))
        {
            buffer = new Byte[ifs.Length];
            ifs.Read(buffer, 0, (Int32)ifs.Length);
        }

        //読み込んだデータを圧縮して書き込む
        using (FileStream ofs = new FileStream(gzipFileName, FileMode.Create))
        using (GZipStream gzipStream = new GZipStream(ofs, CompressionMode.Compress, true))
        {
            gzipStream.Write(buffer, 0, buffer.Length);
        }


        /////////////////////////////////////////////////////////////////////
        //解凍
        String decompFileName = @"test2.txt";//解凍するファイルの名前
        using (FileStream ifs = new FileStream(gzipFileName, FileMode.Open))
        using (GZipStream gzipStream = new GZipStream(ifs, CompressionMode.Decompress))
        using (FileStream ofs = new FileStream(decompFileName, FileMode.Create))
        {
            buffer = new Byte[1024];
            while (true)
            {
                //GZipで圧縮されたファイルからデータを読み込む
                Int32 readBytes = gzipStream.Read(buffer, 0, buffer.Length);
                if (readBytes == 0)
                {
                    break;
                }

                //解凍されたデータを書き込む
                ofs.Write(buffer, 0, readBytes);
            }
        }
    }
}