Class Closeables


  • @Beta
    public final class Closeables
    extends java.lang.Object
    Utility methods for working with Closeable objects.
    Since:
    1.0
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static void close​(java.io.Closeable closeable, boolean swallowIOException)
      Closes a Closeable, with control over whether an IOException may be thrown.
      static void closeQuietly​(java.io.Closeable closeable)
      Deprecated.
      Where possible, use the try-with-resources statement if using JDK7 or Closer on JDK6 to close one or more Closeable objects.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • close

        public static void close​(@Nullable
                                 java.io.Closeable closeable,
                                 boolean swallowIOException)
                          throws java.io.IOException
        Closes a Closeable, with control over whether an IOException may 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 swallowIOException is true then we never throw IOException but 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 - the Closeable object to be closed, or null, in which case this method does nothing
        swallowIOException - if true, don't propagate IO exceptions thrown by the close methods
        Throws:
        java.io.IOException - if swallowIOException is false and close throws an IOException.
      • closeQuietly

        @Deprecated
        public static void closeQuietly​(@Nullable
                                        java.io.Closeable closeable)
        Deprecated.
        Where possible, use the try-with-resources statement if using JDK7 or Closer on JDK6 to close one or more Closeable objects. This method is deprecated because it is easy to misuse and may swallow IO exceptions that really should be thrown and handled. See Guava issue 1118 for a more detailed explanation of the reasons for deprecation and see Closing Resources for more information on the problems with closing Closeable objects and some of the preferred solutions for handling it correctly. This method is scheduled to be removed in Guava 16.0.
        Equivalent to calling close(closeable, true), but with no IOException in the signature.
        Parameters:
        closeable - the Closeable object to be closed, or null, in which case this method does nothing