File Stream C#

/*
C#: The Complete Reference 
by Herbert Schildt 
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
/* Copy a file. 
 
   To use this program, specify the name  
   of the source file and the destination file. 
   For example, to copy a file called FIRST.DAT 
   to a file called SECOND.DAT, use the following 
   command line. 
 
   CopyFile FIRST.DAT SECOND.DAT 
*/ 
 
using System; 
using System.IO;  
 
public class CopyFile { 
  public static void Main(string[] args) { 
    int i; 
    FileStream fin; 
    FileStream fout; 
 
    try { 
      // open input file 
      try { 
        fin = new FileStream(args[0], FileMode.Open); 
      } catch(FileNotFoundException exc) { 
        Console.WriteLine(exc.Message + "\nInput File Not Found"); 
        return; 
      } 
 
      // open output file 
      try { 
        fout = new FileStream(args[1], FileMode.Create); 
      } catch(IOException exc) { 
        Console.WriteLine(exc.Message + "\nError Opening Output File"); 
        return; 
      } 
    } catch(IndexOutOfRangeException exc) { 
      Console.WriteLine(exc.Message + "\nUsage: CopyFile From To"); 
      return; 
    } 
 
    // Copy File 
    try { 
      do { 
        i = fin.ReadByte(); 
        if(i != -1) fout.WriteByte((byte)i); 
      } while(i != -1); 
    } catch(IOException exc) { 
      Console.WriteLine(exc.Message + "File Error"); 
    } 
 
    fin.Close(); 
    fout.Close(); 
  } 
}