Class TeeOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

    public class TeeOutputStream
    extends ProxyOutputStream
    Classic splitter of OutputStream. Named after the Unix 'tee' command. It allows a stream to be branched off so there are now two streams.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.io.OutputStream branch
      The second OutputStream to write to.
      • Fields inherited from class java.io.FilterOutputStream

        out
    • Constructor Summary

      Constructors 
      Constructor Description
      TeeOutputStream​(java.io.OutputStream out, java.io.OutputStream branch)
      Constructs a TeeOutputStream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes both output streams.
      void flush()
      Flushes both streams.
      void write​(byte[] b)
      Writes the bytes to both streams.
      void write​(byte[] b, int off, int len)
      Writes the specified bytes to both streams.
      void write​(int b)
      Writes a byte to both streams.
      • Methods inherited from class java.io.OutputStream

        nullOutputStream
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • branch

        protected java.io.OutputStream branch
        The second OutputStream to write to. TODO Make private and final in 3.0.
    • Constructor Detail

      • TeeOutputStream

        public TeeOutputStream​(java.io.OutputStream out,
                               java.io.OutputStream branch)
        Constructs a TeeOutputStream.
        Parameters:
        out - the main OutputStream
        branch - the second OutputStream
    • Method Detail

      • write

        public void write​(byte[] b)
                   throws java.io.IOException
        Writes the bytes to both streams.
        Overrides:
        write in class ProxyOutputStream
        Parameters:
        b - the bytes to write
        Throws:
        java.io.IOException - if an I/O error occurs.
      • write

        public void write​(byte[] b,
                          int off,
                          int len)
                   throws java.io.IOException
        Writes the specified bytes to both streams.
        Overrides:
        write in class ProxyOutputStream
        Parameters:
        b - the bytes to write
        off - The start offset
        len - The number of bytes to write
        Throws:
        java.io.IOException - if an I/O error occurs.
      • write

        public void write​(int b)
                   throws java.io.IOException
        Writes a byte to both streams.
        Overrides:
        write in class ProxyOutputStream
        Parameters:
        b - the byte to write
        Throws:
        java.io.IOException - if an I/O error occurs.
      • flush

        public void flush()
                   throws java.io.IOException
        Flushes both streams.
        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class ProxyOutputStream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • close

        public void close()
                   throws java.io.IOException
        Closes both output streams.

        If closing the main output stream throws an exception, attempt to close the branch output stream.

        If closing the main and branch output streams both throw exceptions, which exceptions is thrown by this method is currently unspecified and subject to change.

        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class ProxyOutputStream
        Throws:
        java.io.IOException - if an I/O error occurs.