Package org.apache.commons.io.output

# Class CloseShieldOutputStream

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

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

public class CloseShieldOutputStream extends ProxyOutputStream
Proxy stream that prevents the underlying output stream from being closed.

This class is typically used in cases where an output stream needs to be passed to a component that wants to explicitly close the stream even if other components would still use the stream for output.

Since:
  1.4

- ## Field Summary

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

  `out`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CloseShieldOutputStream(OutputStream outputStream)`
  Deprecated.
  Using this constructor prevents IDEs from warning if the underlying output stream is never closed.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Replaces the underlying output stream with a `ClosedOutputStream` sentinel.
  `static CloseShieldOutputStream`
  `wrap(OutputStream outputStream)`
  Constructs a proxy that shields the given output stream from being closed.

  ### Methods inherited from class org.apache.commons.io.output.ProxyOutputStream

  `afterWrite, beforeWrite, flush, handleIOException, write, write, write`

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

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

- ## Constructor Details

  - ### CloseShieldOutputStream

    @Deprecated public CloseShieldOutputStream(OutputStream outputStream)
    Deprecated.
    Using this constructor prevents IDEs from warning if the underlying output stream is never closed. Use `wrap(OutputStream)` instead.
    Constructs a proxy that shields the given output stream from being closed.
    Parameters:
      `outputStream` - underlying output stream

- ## Method Details

  - ### wrap

    public static CloseShieldOutputStream wrap(OutputStream outputStream)
    Constructs a proxy that shields the given output stream from being closed.
    Parameters:
      `outputStream` - the output stream to wrap
    Returns:
      the created proxy
    Since:
      2.9.0

  - ### close

    public void close()
    Replaces the underlying output stream with a `ClosedOutputStream` sentinel. The original output stream will remain open, but this proxy will appear closed.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `ProxyOutputStream`