File Input Output Java

/*
 * LoggingWriter.java Created Sep 7, 2010 by Andrew Butler, PSL
 */
//package prisms.util;
import java.io.Writer;
/** Wraps a stream, printing to standard out everything that is written to it. */
public class LoggingWriter extends Writer {
  private java.io.Writer theBase;
  private java.io.Writer theLog;
  /**
   * @param base
   *            The writer to wrap
   * @param logFile
   *            The name of the file to write to
   * @throws java.io.IOException
   *             If the file cannot be written to
   */
  public LoggingWriter(java.io.Writer base, String logFile)
      throws java.io.IOException {
    theBase = base;
    if (logFile != null)
      theLog = new java.io.BufferedWriter(new java.io.FileWriter(logFile));
  }
  /**
   * @return The writer wrapped by this logging writer
   */
  public java.io.Writer getBase() {
    return theBase;
  }
  @Override
  public void write(char[] cbuf, int off, int len) throws java.io.IOException {
    theBase.write(cbuf, off, len);
    if (theLog != null)
      theLog.write(cbuf, off, len);
    else
      System.out.print(new String(cbuf, off, len));
  }
  @Override
  public void flush() throws java.io.IOException {
    theBase.flush();
    if (theLog != null)
      theLog.flush();
    else
      System.out.flush();
  }
  @Override
  public void close() throws java.io.IOException {
    theBase.close();
    if (theLog != null)
      theLog.close();
    else
      System.out.println();
  }
}