Class Closeables
Closeable objects.- Since:
- 1.0
- Author:
- Michael Lancaster
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidCloses aCloseable, with control over whether anIOExceptionmay be thrown.static voidcloseQuietly(@Nullable InputStream inputStream) Closes the givenInputStream, logging anyIOExceptionthat's thrown rather than propagating it.static voidcloseQuietly(@Nullable Reader reader) Closes the givenReader, logging anyIOExceptionthat's thrown rather than propagating it.
-
Method Details
-
close
public static void close(@Nullable Closeable closeable, boolean swallowIOException) throws IOException Closes aCloseable, with control over whether anIOExceptionmay be thrown. This is primarily useful in a finally block, where a thrown exception needs to be logged but not propagated (otherwise the original exception will be lost).If
swallowIOExceptionis true then we never throwIOExceptionbut merely log it.Example:
public void useStreamNicely() throws IOException { SomeStream stream = new SomeStream("foo"); boolean threw = true; try { // ... code which does something with the stream ... threw = false; } finally { // If an exception occurs, rethrow it only if threw==false: Closeables.close(stream, threw); } }- Parameters:
closeable- theCloseableobject to be closed, or null, in which case this method does nothingswallowIOException- if true, don't propagate IO exceptions thrown by theclosemethods- Throws:
IOException- ifswallowIOExceptionis false andclosethrows anIOException.
-
closeQuietly
Closes the givenInputStream, logging anyIOExceptionthat's thrown rather than propagating it.While it's not safe in the general case to ignore exceptions that are thrown when closing an I/O resource, it should generally be safe in the case of a resource that's being used only for reading, such as an
InputStream. Unlike with writable resources, there's no chance that a failure that occurs when closing the stream indicates a meaningful problem such as a failure to flush all bytes to the underlying resource.- Parameters:
inputStream- the input stream to be closed, ornullin which case this method does nothing- Since:
- 17.0
-
closeQuietly
Closes the givenReader, logging anyIOExceptionthat's thrown rather than propagating it.While it's not safe in the general case to ignore exceptions that are thrown when closing an I/O resource, it should generally be safe in the case of a resource that's being used only for reading, such as a
Reader. Unlike with writable resources, there's no chance that a failure that occurs when closing the reader indicates a meaningful problem such as a failure to flush all bytes to the underlying resource.- Parameters:
reader- the reader to be closed, ornullin which case this method does nothing- Since:
- 17.0
-