com.google.common.io
Class Closeables

java.lang.Object
  extended by com.google.common.io.Closeables

@Beta
public final class Closeables
extends java.lang.Object

Utility methods for working with Closeable objects.

Since:
1.0

Method Summary
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. 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, 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