File Stream C#

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
 /*
  Example15_11.cs illustrates use of FileStreams
*/
using System;
using System.Windows.Forms;
using System.IO;
public class Example15_11 
{
    [STAThread]
  public static void Main() 
  {
    // use an open file dialog to get a filename
    OpenFileDialog dlgOpen = new OpenFileDialog();
    dlgOpen.Title="Select file to back up";
    if (dlgOpen.ShowDialog() == DialogResult.OK)
    {
      FileStream inStream = File.OpenRead(dlgOpen.FileName);
      FileStream outStream = 
        File.OpenWrite(dlgOpen.FileName + ".bak");
      byte[] buf = new byte[4096];
      int bytesRead;
      // copy all data from in to out
      while ((bytesRead = inStream.Read(buf, 0, 4096)) > 0)
        outStream.Write(buf, 0, bytesRead);
      // clean up
      outStream.Flush();
      outStream.Close();
      inStream.Close();
    }
  }
}