Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.io.input
Class TeeInputStream

    java.lang.Object
      java.io.InputStream
          java.io.FilterInputStream
              org.apache.commons.io.input.ProxyInputStream
                  org.apache.commons.io.input.TeeInputStream

All Implemented Interfaces:
  Closeable

    public class TeeInputStream

extends ProxyInputStream

InputStream proxy that transparently writes a copy of all bytes read from the proxied stream to a given OutputStream. Using `ProxyInputStream.skip(long)` or `ProxyInputStream.mark(int)`/`ProxyInputStream.reset()` on the stream will result on some bytes from the input stream being skipped or duplicated in the output stream.

The proxied input stream is closed when the `close()` method is called on this proxy. It is configurable whether the associated output stream will also closed.

Since:
  1.4
Version:
  $Id: TeeInputStream.java 1307461 2012-03-30 15:12:29Z ggregory $

Field Summary

Fields inherited from class java.io.FilterInputStream
`in`

Constructor Summary
`TeeInputStream(InputStream input, OutputStream branch)` Creates a TeeInputStream that proxies the given `InputStream` and copies all read bytes to the given `OutputStream`.
`TeeInputStream(InputStream input, OutputStream branch, boolean closeBranch)` Creates a TeeInputStream that proxies the given `InputStream` and copies all read bytes to the given `OutputStream`.

Method Summary
`void` | `close()` Closes the proxied input stream and, if so configured, the associated output stream.
`int` | `read()` Reads a single byte from the proxied input stream and writes it to the associated output stream.
`int` | `read(byte[] bts)` Reads bytes from the proxied input stream and writes the read bytes to the associated output stream.
`int` | `read(byte[] bts, int st, int end)` Reads bytes from the proxied input stream and writes the read bytes to the associated output stream.

Methods inherited from class org.apache.commons.io.input.ProxyInputStream
`afterRead, available, beforeRead, handleIOException, mark, markSupported, reset, skip`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### TeeInputStream

    public TeeInputStream(InputStream input,
                          OutputStream branch)

  Creates a TeeInputStream that proxies the given `InputStream` and copies all read bytes to the given `OutputStream`. The given output stream will not be closed when this stream gets closed.

  Parameters:
    `input` - input stream to be proxied
    `branch` - output stream that will receive a copy of all bytes read

### TeeInputStream

    public TeeInputStream(InputStream input,
                          OutputStream branch,
                          boolean closeBranch)

  Creates a TeeInputStream that proxies the given `InputStream` and copies all read bytes to the given `OutputStream`. The given output stream will be closed when this stream gets closed if the closeBranch parameter is `true`.

  Parameters:
    `input` - input stream to be proxied
    `branch` - output stream that will receive a copy of all bytes read
    `closeBranch` - flag for closing also the output stream when this stream is closed

Method Detail

### close

    public void close()
               throws IOException

  Closes the proxied input stream and, if so configured, the associated output stream. An exception thrown from one stream will not prevent closing of the other stream.

  Specified by:
    `close` in interface `Closeable`
  Overrides:
    `close` in class `ProxyInputStream`
  Throws:
    `IOException` - if either of the streams could not be closed

### read

    public int read()
             throws IOException

  Reads a single byte from the proxied input stream and writes it to the associated output stream.

  Overrides:
    `read` in class `ProxyInputStream`
  Returns:
    next byte from the stream, or -1 if the stream has ended
  Throws:
    `IOException` - if the stream could not be read (or written)

### read

    public int read(byte[] bts,
                    int st,
                    int end)
             throws IOException

  Reads bytes from the proxied input stream and writes the read bytes to the associated output stream.

  Overrides:
    `read` in class `ProxyInputStream`
  Parameters:
    `bts` - byte buffer
    `st` - start offset within the buffer
    `end` - maximum number of bytes to read
  Returns:
    number of bytes read, or -1 if the stream has ended
  Throws:
    `IOException` - if the stream could not be read (or written)

### read

    public int read(byte[] bts)
             throws IOException

  Reads bytes from the proxied input stream and writes the read bytes to the associated output stream.

  Overrides:
    `read` in class `ProxyInputStream`
  Parameters:
    `bts` - byte buffer
  Returns:
    number of bytes read, or -1 if the stream has ended
  Throws:
    `IOException` - if the stream could not be read (or written)

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2012 The Apache Software Foundation. All Rights Reserved.