File Stream C#

/*
C#: The Complete Reference 
by Herbert Schildt 
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// An enhanced cipher component that maintains a log file.  
using CipherLib; // import CipherComp's namespace  
  
using System;  
using System.ComponentModel;  
using System.IO;  
  
namespace CipherLib {  
  
  // An Cipher component that maintains a log file. 
  class CipherComp : Component {   
    static int useID = 0; 
    int id; // instance id 
    bool isDisposed; // true if component is disposed.  
    FileStream log; 
  
    // Constructor  
    public CipherComp() {  
      isDisposed = false; // component not disposed  
      try {  
        log = new FileStream("CipherLog" + useID, FileMode.Create);  
        id = useID; 
        useID++; 
      } catch (FileNotFoundException exc) {  
        Console.WriteLine(exc);  
        log = null; 
      }  
    }  
 
    // Destructor  
    ~CipherComp() {  
       Console.WriteLine("Destructor for component " 
                         + id); 
       Dispose(false);  
    }  
  
    // Encode the file. Return and store result. 
    public string Encode(string msg) {  
  
      string temp = "";  
  
      for(int i=0;i < msg.Length; i++)   
        temp += (char) (msg[i] + 1);          
  
      // Store in log file.  
      for(int i=0; i < temp.Length; i++)  
        log.WriteByte((byte) temp[i]);  
  
      return temp; 
    }  
  
    // Decode the message. Return and store result.  
    public string Decode(string msg) {  
  
      string temp = "";  
  
      for(int i=0; i < msg.Length; i++)  
        temp += (char) (msg[i] - 1);  
  
      // Store in log file.  
      for(int i=0; i < temp.Length; i++)  
        log.WriteByte((byte) temp[i]);  
 
      return temp; 
    }  
  
    protected override void Dispose(bool dispAll) {  
      Console.WriteLine("Dispose(" + dispAll + 
                        ") for component " + id); 
 
      if(!isDisposed) {  
        if(dispAll) {  
          Console.WriteLine("Closing file for " + 
                            "component " + id); 
          log.Close(); // close encoded file  
          isDisposed = true;  
        }  
        // no unmanaged resources to release  
        base.Dispose(dispAll);  
      }  
    }  
  }  
}
// Another client that uses CipherComp.  
  
  
public class CipherCompClient1 {  
  public static void Main() {  
    CipherComp cc = new CipherComp();  
  
    string text = "Testing";  
  
    string ciphertext = cc.Encode(text);  
    Console.WriteLine(ciphertext);  
  
    string plaintext = cc.Decode(ciphertext);  
    Console.WriteLine(plaintext);  
 
    text = "Components are powerful."; 
 
    ciphertext = cc.Encode(text);  
    Console.WriteLine(ciphertext);  
  
    plaintext = cc.Decode(ciphertext);  
    Console.WriteLine(plaintext);  
  
    cc.Dispose(); // free resources  
  }  
}