weka.core

## Class Tee

- java.lang.Object
- - java.io.OutputStream
  - - java.io.FilterOutputStream
    - - java.io.PrintStream
      - - weka.core.Tee

- All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.Appendable, java.lang.AutoCloseable, RevisionHandler

      public class Tee
      extends java.io.PrintStream
      implements RevisionHandler

  This class pipelines print/println's to several PrintStreams. Useful for redirecting System.out and System.err to files etc.
  E.g., for redirecting stderr/stdout to files with timestamps and:

          import java.io.*;
          import weka.core.Tee;

          ...
          // stdout
          Tee teeOut = new Tee(System.out);
          teeOut.add(new PrintStream(new FileOutputStream("out.txt")), true);
          System.setOut(teeOut);

          // stderr
          Tee teeErr = new Tee(System.err);
          teeErr.add(new PrintStream(new FileOutputStream("err.txt")), true);
          System.setOut(teeErr);
          ...

  Version:
    $Revision: 11247 $
  Author:
    FracPete (fracpete at waikato dot ac dot nz)

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Tee()` initializes the object, with a default printstream.
    `Tee(java.io.PrintStream def)` initializes the object with the given default printstream, e.g., System.out.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(java.io.PrintStream p)` adds the given PrintStream to the list of streams, with NO timestamp and NO prefix.
    `void` | `add(java.io.PrintStream p, boolean timestamp)` adds the given PrintStream to the list of streams, with NO prefix.
    `void` | `add(java.io.PrintStream p, boolean timestamp, java.lang.String prefix)` adds the given PrintStream to the list of streams.
    `void` | `clear()` removes all streams and places the default printstream, if any, again in the list.
    `boolean` | `contains(java.io.PrintStream p)` checks whether the given PrintStream is already in the list.
    `void` | `flush()` flushes all the printstreams.
    `java.io.PrintStream` | `get(int index)` returns the specified PrintStream from the list.
    `java.io.PrintStream` | `getDefault()` returns the default printstrean, can be NULL.
    `java.lang.String` | `getRevision()` Returns the revision string.
    `void` | `print(boolean x)` prints the given boolean to the streams.
    `void` | `print(char x)` prints the given char to the streams.
    `void` | `print(char[] x)` prints the given char array to the streams.
    `void` | `print(double x)` prints the given double to the streams.
    `void` | `print(float x)` prints the given float to the streams.
    `void` | `print(int x)` prints the given int to the streams.
    `void` | `print(long x)` prints the given long to the streams.
    `void` | `print(java.lang.Object x)` prints the given object to the streams.
    `void` | `print(java.lang.String x)` prints the given string to the streams.
    `void` | `println()` prints a new line to the streams.
    `void` | `println(boolean x)` prints the given boolean to the streams.
    `void` | `println(char x)` prints the given char to the streams.
    `void` | `println(char[] x)` prints the given char array to the streams.
    `void` | `println(double x)` prints the given double to the streams.
    `void` | `println(float x)` prints the given float to the streams.
    `void` | `println(int x)` prints the given int to the streams.
    `void` | `println(long x)` prints the given long to the streams.
    `void` | `println(java.lang.Object x)` prints the given object to the streams (for Throwables we print the stack trace).
    `void` | `println(java.lang.String x)` prints the given string to the streams.
    `java.io.PrintStream` | `remove(int index)` removes the given PrintStream from the list.
    `java.io.PrintStream` | `remove(java.io.PrintStream p)` removes the given PrintStream from the list.
    `int` | `size()` returns the number of streams currently in the list.
    `java.lang.String` | `toString()` returns only the classname and the number of streams.
    `void` | `write(byte[] buf, int off, int len)` Writes `len` bytes from the specified byte array starting at offset `off` to this stream.
    `void` | `write(int b)` Writes the specified byte to this stream.

    - ### Methods inherited from class java.io.PrintStream

      `append, append, append, checkError, close, format, format, printf, printf`

    - ### Methods inherited from class java.io.FilterOutputStream

      `write`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Tee

          public Tee()

      initializes the object, with a default printstream.

    - #### Tee

          public Tee(java.io.PrintStream def)

      initializes the object with the given default printstream, e.g., System.out.
      Parameters:
        `def` - the default printstream, remains also after calling clear()

  - ### Method Detail

    - #### clear

          public void clear()

      removes all streams and places the default printstream, if any, again in the list.
      See Also:
        `getDefault()`

    - #### getDefault

          public java.io.PrintStream getDefault()

      returns the default printstrean, can be NULL.
      Returns:
        the default printstream
      See Also:
        `m_Default`

    - #### add

          public void add(java.io.PrintStream p)

      adds the given PrintStream to the list of streams, with NO timestamp and NO prefix.
      Parameters:
        `p` - the printstream to add

    - #### add

          public void add(java.io.PrintStream p,
                 boolean timestamp)

      adds the given PrintStream to the list of streams, with NO prefix.
      Parameters:
        `p` - the printstream to add
        `timestamp` - whether to use timestamps or not

    - #### add

          public void add(java.io.PrintStream p,
                 boolean timestamp,
                 java.lang.String prefix)

      adds the given PrintStream to the list of streams.
      Parameters:
        `p` - the printstream to add
        `timestamp` - whether to use timestamps or not
        `prefix` - the prefix to use

    - #### get

          public java.io.PrintStream get(int index)

      returns the specified PrintStream from the list.
      Parameters:
        `index` - the index of the PrintStream to return
      Returns:
        the specified PrintStream, or null if invalid index

    - #### remove

          public java.io.PrintStream remove(java.io.PrintStream p)

      removes the given PrintStream from the list.
      Parameters:
        `p` - the PrintStream to remove
      Returns:
        returns the removed PrintStream if it could be removed, null otherwise

    - #### remove

          public java.io.PrintStream remove(int index)

      removes the given PrintStream from the list.
      Parameters:
        `index` - the index of the PrintStream to remove
      Returns:
        returns the removed PrintStream if it could be removed, null otherwise

    - #### contains

          public boolean contains(java.io.PrintStream p)

      checks whether the given PrintStream is already in the list.
      Parameters:
        `p` - the PrintStream to look for
      Returns:
        true if the PrintStream is in the list

    - #### size

          public int size()

      returns the number of streams currently in the list.
      Returns:
        the number of streams in the list

    - #### flush

          public void flush()

      flushes all the printstreams.
      Specified by:
        `flush` in interface `java.io.Flushable`
      Overrides:
        `flush` in class `java.io.PrintStream`

    - #### print

          public void print(int x)

      prints the given int to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(long x)

      prints the given long to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(float x)

      prints the given float to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(double x)

      prints the given double to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(boolean x)

      prints the given boolean to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(char x)

      prints the given char to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(char[] x)

      prints the given char array to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(java.lang.String x)

      prints the given string to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### print

          public void print(java.lang.Object x)

      prints the given object to the streams.
      Overrides:
        `print` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println()

      prints a new line to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`

    - #### println

          public void println(int x)

      prints the given int to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(long x)

      prints the given long to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(float x)

      prints the given float to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(double x)

      prints the given double to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(boolean x)

      prints the given boolean to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(char x)

      prints the given char to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(char[] x)

      prints the given char array to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(java.lang.String x)

      prints the given string to the streams.
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### println

          public void println(java.lang.Object x)

      prints the given object to the streams (for Throwables we print the stack trace).
      Overrides:
        `println` in class `java.io.PrintStream`
      Parameters:
        `x` - the object to print

    - #### write

          public void write(byte[] buf,
                   int off,
                   int len)

      Writes `len` bytes from the specified byte array starting at offset `off` to this stream. If automatic flushing is enabled then the `flush` method will be invoked.

      Note that the bytes will be written as given; to write characters that will be translated according to the platform's default character encoding, use the `print(char)` or `println(char)` methods.

      Overrides:
        `write` in class `java.io.PrintStream`
      Parameters:
        `buf` - A byte array
        `off` - Offset from which to start taking bytes
        `len` - Number of bytes to write

    - #### write

          public void write(int b)

      Writes the specified byte to this stream. If the byte is a newline and automatic flushing is enabled then the `flush` method will be invoked.

      Note that the byte is written as given; to write a character that will be translated according to the platform's default character encoding, use the `print(char)` or `println(char)` methods.

      Overrides:
        `write` in class `java.io.PrintStream`
      Parameters:
        `b` - The byte to be written
      See Also:
        `print(char)`, `println(char)`

    - #### toString

          public java.lang.String toString()

      returns only the classname and the number of streams.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        only the classname and the number of streams

    - #### getRevision

          public java.lang.String getRevision()

      Returns the revision string.
      Specified by:
        `getRevision` in interface `RevisionHandler`
      Returns:
        the revision