org.apache.commons.io.input

## Class TeeReader

- java.lang.Object
- - java.io.Reader
  - - java.io.FilterReader
    - - org.apache.commons.io.input.ProxyReader
      - - org.apache.commons.io.input.TeeReader

- All Implemented Interfaces:
    Closeable, AutoCloseable, Readable

      public class TeeReader
      extends ProxyReader

  Reader proxy that transparently writes a copy of all characters read from the proxied reader to a given Reader. Using `ProxyReader.skip(long)` or `ProxyReader.mark(int)`/`ProxyReader.reset()` on the reader will result on some characters from the reader being skipped or duplicated in the writer.

  The proxied reader is closed when the `close()` method is called on this proxy. You may configure whether the reader closes the writer.

  Since:
    2.7

- - ### Field Summary

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

      `in`

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

      `lock`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TeeReader(Reader input, Writer branch)` Creates a TeeReader that proxies the given `Reader` and copies all read characters to the given `Writer`.
    `TeeReader(Reader input, Writer branch, boolean closeBranch)` Creates a TeeReader that proxies the given `Reader` and copies all read characters to the given `Writer`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Closes the proxied reader and, if so configured, the associated writer.
    `int` | `read()` Reads a single character from the proxied reader and writes it to the associated writer.
    `int` | `read(char[] chr)` Reads characters from the proxied reader and writes the read characters to the associated writer.
    `int` | `read(char[] chr, int st, int end)` Reads characters from the proxied reader and writes the read characters to the associated writer.
    `int` | `read(CharBuffer target)` Reads characters from the proxied reader and writes the read characters to the associated writer.

    - ### Methods inherited from class org.apache.commons.io.input.ProxyReader

      `afterRead, beforeRead, handleIOException, mark, markSupported, ready, reset, skip`

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

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

- - ### Constructor Detail

    - #### TeeReader

          public TeeReader(Reader input,
                           Writer branch)

      Creates a TeeReader that proxies the given `Reader` and copies all read characters to the given `Writer`. The given writer will not be closed when this reader gets closed.
      Parameters:
        `input` - reader to be proxied
        `branch` - writer that will receive a copy of all characters read

    - #### TeeReader

          public TeeReader(Reader input,
                           Writer branch,
                           boolean closeBranch)

      Creates a TeeReader that proxies the given `Reader` and copies all read characters to the given `Writer`. The given writer will be closed when this reader gets closed if the closeBranch parameter is `true`.
      Parameters:
        `input` - reader to be proxied
        `branch` - writer that will receive a copy of all characters read
        `closeBranch` - flag for closing also the writer when this reader is closed

  - ### Method Detail

    - #### close

          public void close()
                     throws IOException

      Closes the proxied reader and, if so configured, the associated writer. An exception thrown from the reader will not prevent closing of the writer.
      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `ProxyReader`
      Throws:
        `IOException` - if either the reader or writer could not be closed

    - #### read

          public int read()
                   throws IOException

      Reads a single character from the proxied reader and writes it to the associated writer.
      Overrides:
        `read` in class `ProxyReader`
      Returns:
        next character from the reader, or -1 if the reader has ended
      Throws:
        `IOException` - if the reader could not be read (or written)

    - #### read

          public int read(char[] chr)
                   throws IOException

      Reads characters from the proxied reader and writes the read characters to the associated writer.
      Overrides:
        `read` in class `ProxyReader`
      Parameters:
        `chr` - character buffer
      Returns:
        number of characters read, or -1 if the reader has ended
      Throws:
        `IOException` - if the reader could not be read (or written)

    - #### read

          public int read(char[] chr,
                          int st,
                          int end)
                   throws IOException

      Reads characters from the proxied reader and writes the read characters to the associated writer.
      Overrides:
        `read` in class `ProxyReader`
      Parameters:
        `chr` - character buffer
        `st` - start offset within the buffer
        `end` - maximum number of characters to read
      Returns:
        number of characters read, or -1 if the reader has ended
      Throws:
        `IOException` - if the reader could not be read (or written)

    - #### read

          public int read(CharBuffer target)
                   throws IOException

      Reads characters from the proxied reader and writes the read characters to the associated writer.
      Specified by:
        `read` in interface `Readable`
      Overrides:
        `read` in class `ProxyReader`
      Parameters:
        `target` - character buffer
      Returns:
        number of characters read, or -1 if the reader has ended
      Throws:
        `IOException` - if the reader could not be read (or written)

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