Class CloseShieldInputStream

All Implemented Interfaces:
Closeable, AutoCloseable

Proxy stream that prevents the underlying input stream from being closed.

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

Since:
1.4
  • Constructor Details

    • CloseShieldInputStream

      Deprecated.
      Using this constructor prevents IDEs from warning if the underlying input stream is never closed. Use wrap(InputStream) instead.
      Constructs a proxy that shields the given input stream from being closed.
      Parameters:
      inputStream - underlying input stream
  • Method Details

    • systemIn

      public static InputStream systemIn(InputStream inputStream)
      Constructs a proxy that only shields System.in from closing.
      Parameters:
      inputStream - the candidate input stream.
      Returns:
      the given stream or a proxy on System.in.
      Since:
      2.17.0
    • wrap

      public static CloseShieldInputStream wrap(InputStream inputStream)
      Constructs a proxy that shields the given input stream from being closed.
      Parameters:
      inputStream - the input stream to wrap
      Returns:
      the created proxy
      Since:
      2.9.0
    • close

      public void close()
      Replaces the underlying input stream with a ClosedInputStream sentinel. The original input 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 ProxyInputStream