Package adams.core.io

Class Tee

  • All Implemented Interfaces:
    Closeable, Flushable, Appendable, AutoCloseable

    public class Tee
    extends PrintStream
    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 adams.core.io.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$
    Author:
    FracPete (fracpete at waikato dot ac dot nz)
    • Field Detail

      • m_Streams

        protected List<PrintStream> m_Streams
        the different PrintStreams.
      • m_Timestamps

        protected List<Boolean> m_Timestamps
        whether to add timestamps or not.
      • m_Prefixes

        protected List<String> m_Prefixes
        whether to add a prefix or not.
      • m_Default

        protected PrintStream m_Default
        the default printstream.
    • Constructor Detail

      • Tee

        public Tee()
        initializes the object, with a default printstream.
      • Tee

        public Tee​(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 PrintStream getDefault()
        returns the default printstrean, can be NULL.
        Returns:
        the default printstream
        See Also:
        m_Default
      • add

        public void add​(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​(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​(PrintStream p,
                        boolean timestamp,
                        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 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 PrintStream remove​(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 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​(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
      • print

        public void print​(int x)
        prints the given int to the streams.
        Overrides:
        print in class PrintStream
        Parameters:
        x - the object to print
      • print

        public void print​(boolean x)
        prints the given boolean to the streams.
        Overrides:
        print in class PrintStream
        Parameters:
        x - the object to print
      • print

        public void print​(String x)
        prints the given string to the streams.
        Overrides:
        print in class PrintStream
        Parameters:
        x - the object to print
      • print

        public void print​(Object x)
        prints the given object to the streams.
        Overrides:
        print in class PrintStream
        Parameters:
        x - the object to print
      • println

        public void println()
        prints a new line to the streams.
        Overrides:
        println in class PrintStream
      • println

        public void println​(int x)
        prints the given int to the streams.
        Overrides:
        println in class PrintStream
        Parameters:
        x - the object to print
      • println

        public void println​(boolean x)
        prints the given boolean to the streams.
        Overrides:
        println in class PrintStream
        Parameters:
        x - the object to print
      • println

        public void println​(String x)
        prints the given string to the streams.
        Overrides:
        println in class PrintStream
        Parameters:
        x - the object to print
      • println

        public void println​(Object x)
        prints the given object to the streams (for Throwables we print the stack trace).
        Overrides:
        println in class PrintStream
        Parameters:
        x - the object to print
      • toString

        public String toString()
        returns only the classname and the number of streams.
        Overrides:
        toString in class Object
        Returns:
        only the classname and the number of streams