Class 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
    Description
    TeeReader(Reader input, Writer branch)
    Constructs a TeeReader that proxies the given Reader and copies all read characters to the given Writer.
    TeeReader(Reader input, Writer branch, boolean closeBranch)
    Constructs a TeeReader that proxies the given Reader and copies all read characters to the given Writer.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes the proxied reader and, if so configured, the associated writer.
    int
    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 Details

    • TeeReader

      public TeeReader(Reader input, Writer branch)
      Constructs 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)
      Constructs 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 Details

    • 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 AutoCloseable
      Specified by:
      close in interface Closeable
      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)