Package org.apache.commons.io.output

# Class ProxyWriter

java.lang.Object
java.io.Writer
java.io.FilterWriter
org.apache.commons.io.output.ProxyWriter

All Implemented Interfaces:
  `Closeable`, `Flushable`, `Appendable`, `AutoCloseable`

Direct Known Subclasses:
  `CloseShieldWriter`, `FileWriterWithEncoding`, `TaggedWriter`

public class ProxyWriter extends FilterWriter
A writer proxy which delegates to the wrapped writer.

It is an alternative base class to FilterWriter to increase reusability, because FilterWriter changes the methods being called, such as `write(char[]) to write(char[], int, int)` and `write(String) to write(String, int, int)`.

- ## Field Summary

  ### Fields inherited from class java.io.FilterWriter

  `out`

  ### Fields inherited from class java.io.Writer

  `lock`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ProxyWriter(Writer delegate)`
  Constructs a new ProxyWriter.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `afterWrite(int n)`
  Invoked by the write methods after the proxied call has returned successfully.
  `Writer`
  `append(char c)`
  Invokes the delegate's `append(char)` method.
  `Writer`
  `append(CharSequence csq)`
  Invokes the delegate's `append(CharSequence)` method.
  `Writer`
  `append(CharSequence csq, int start, int end)`
  Invokes the delegate's `append(CharSequence, int, int)` method.
  `protected void`
  `beforeWrite(int n)`
  Invoked by the write methods before the call is proxied.
  `void`
  `close()`
  Invokes the delegate's `close()` method.
  `void`
  `flush()`
  Invokes the delegate's `flush()` method.
  `protected void`
  `handleIOException(IOException e)`
  Handles any IOExceptions thrown.
  `ProxyWriter`
  `setReference(Writer out)`
  Sets the underlying writer.
  `Writer`
  `unwrap()`
  Unwraps this instance by returning the underlying `Writer`.
  `void`
  `write(char[] cbuf)`
  Invokes the delegate's `write(char[])` method.
  `void`
  `write(char[] cbuf, int off, int len)`
  Invokes the delegate's `write(char[], int, int)` method.
  `void`
  `write(int c)`
  Invokes the delegate's `write(int)` method.
  `void`
  `write(String str)`
  Invokes the delegate's `write(String)` method.
  `void`
  `write(String str, int off, int len)`
  Invokes the delegate's `write(String)` method.

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

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

- ## Constructor Details

  - ### ProxyWriter

    public ProxyWriter(Writer delegate)
    Constructs a new ProxyWriter.
    Parameters:
      `delegate` - the Writer to delegate to.

- ## Method Details

  - ### afterWrite

    protected void afterWrite(int n) throws IOException
    Invoked by the write methods after the proxied call has returned successfully. The number of chars written (1 for the `write(int)` method, buffer length for `write(char[])`, etc.) is given as an argument.

    Subclasses can override this method to add common post-processing functionality without having to override all the write methods. The default implementation does nothing.

    Parameters:
      `n` - number of chars written.
    Throws:
      `IOException` - if the post-processing fails.
    Since:
      2.0

  - ### append

    public Writer append(char c) throws IOException
    Invokes the delegate's `append(char)` method.
    Specified by:
      `append` in interface `Appendable`
    Overrides:
      `append` in class `Writer`
    Parameters:
      `c` - The character to write.
    Returns:
      this writer.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      2.0

  - ### append

    public Writer append(CharSequence csq) throws IOException
    Invokes the delegate's `append(CharSequence)` method.
    Specified by:
      `append` in interface `Appendable`
    Overrides:
      `append` in class `Writer`
    Parameters:
      `csq` - The character sequence to write.
    Returns:
      this writer.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      2.0

  - ### append

    public Writer append(CharSequence csq, int start, int end) throws IOException
    Invokes the delegate's `append(CharSequence, int, int)` method.
    Specified by:
      `append` in interface `Appendable`
    Overrides:
      `append` in class `Writer`
    Parameters:
      `csq` - The character sequence to write.
      `start` - The index of the first character to write.
      `end` - The index of the first character to write (exclusive).
    Returns:
      this writer.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      2.0

  - ### beforeWrite

    protected void beforeWrite(int n) throws IOException
    Invoked by the write methods before the call is proxied. The number of chars to be written (1 for the `write(int)` method, buffer length for `write(char[])`, etc.) is given as an argument.

    Subclasses can override this method to add common pre-processing functionality without having to override all the write methods. The default implementation does nothing.

    Parameters:
      `n` - number of chars to be written.
    Throws:
      `IOException` - if the pre-processing fails.
    Since:
      2.0

  - ### close

    public void close() throws IOException
    Invokes the delegate's `close()` method.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `FilterWriter`
    Throws:
      `IOException` - if an I/O error occurs.

  - ### flush

    public void flush() throws IOException
    Invokes the delegate's `flush()` method.
    Specified by:
      `flush` in interface `Flushable`
    Overrides:
      `flush` in class `FilterWriter`
    Throws:
      `IOException` - if an I/O error occurs.

  - ### handleIOException

    protected void handleIOException(IOException e) throws IOException
    Handles any IOExceptions thrown.

    This method provides a point to implement custom exception handling. The default behavior is to re-throw the exception.

    Parameters:
      `e` - The IOException thrown.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      2.0

  - ### setReference

    public ProxyWriter setReference(Writer out)
    Sets the underlying writer.

    Use with caution.

    Parameters:
      `out` - the underlying output writer.
    Returns:
      `this` instance.
    Since:
      2.22.0

  - ### unwrap

    public Writer unwrap()
    Unwraps this instance by returning the underlying `Writer`.

    Use with caution.

    Returns:
      the underlying `Writer`.
    Since:
      2.22.0

  - ### write

    public void write(char[] cbuf) throws IOException
    Invokes the delegate's `write(char[])` method.
    Overrides:
      `write` in class `Writer`
    Parameters:
      `cbuf` - the characters to write.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### write

    public void write(char[] cbuf, int off, int len) throws IOException
    Invokes the delegate's `write(char[], int, int)` method.
    Overrides:
      `write` in class `FilterWriter`
    Parameters:
      `cbuf` - the characters to write.
      `off` - The start offset.
      `len` - The number of characters to write.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### write

    public void write(int c) throws IOException
    Invokes the delegate's `write(int)` method.
    Overrides:
      `write` in class `FilterWriter`
    Parameters:
      `c` - the character to write.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### write

    public void write(String str) throws IOException
    Invokes the delegate's `write(String)` method.
    Overrides:
      `write` in class `Writer`
    Parameters:
      `str` - the string to write.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### write

    public void write(String str, int off, int len) throws IOException
    Invokes the delegate's `write(String)` method.
    Overrides:
      `write` in class `FilterWriter`
    Parameters:
      `str` - the string to write.
      `off` - The start offset.
      `len` - The number of characters to write.
    Throws:
      `IOException` - if an I/O error occurs.