org.apache.commons.io.output

## Class TeeOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - java.io.FilterOutputStream
    - - org.apache.commons.io.output.ProxyOutputStream
      - - org.apache.commons.io.output.TeeOutputStream

- All Implemented Interfaces:
    Closeable, Flushable, 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 and Description
    --- | ---
    `protected OutputStream` | `branch` The second OutputStream to write to.

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

      `out`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TeeOutputStream(OutputStream out, OutputStream branch)` Constructs a TeeOutputStream.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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 org.apache.commons.io.output.ProxyOutputStream

      `afterWrite, beforeWrite, handleIOException`

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### branch

          protected OutputStream branch

      The second OutputStream to write to. TODO Make private and final in 3.0.

  - ### Constructor Detail

    - #### TeeOutputStream

          public TeeOutputStream(OutputStream out,
                                 OutputStream branch)

      Constructs a TeeOutputStream.
      Parameters:
        `out` - the main OutputStream
        `branch` - the second OutputStream

  - ### Method Detail

    - #### write

          public void write(byte[] b)
                     throws IOException

      Writes the bytes to both streams.
      Overrides:
        `write` in class `ProxyOutputStream`
      Parameters:
        `b` - the bytes to write
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(byte[] b,
                            int off,
                            int len)
                     throws 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:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(int b)
                     throws IOException

      Writes a byte to both streams.
      Overrides:
        `write` in class `ProxyOutputStream`
      Parameters:
        `b` - the byte to write
      Throws:
        `IOException` - if an I/O error occurs.

    - #### flush

          public void flush()
                     throws IOException

      Flushes both streams.
      Specified by:
        `flush` in interface `Flushable`
      Overrides:
        `flush` in class `ProxyOutputStream`
      Throws:
        `IOException` - if an I/O error occurs.

    - #### close

          public void close()
                     throws 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 `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `ProxyOutputStream`
      Throws:
        `IOException` - if an I/O error occurs.

Copyright © 2002–2021 The Apache Software Foundation. All rights reserved.