Class IOUtils
- java.lang.Object
-
- org.apache.lucene.util.IOUtils
-
public final class IOUtils extends java.lang.Object
This class emulates the new Java 7 "Try-With-Resources" statement. Remove once Lucene is on Java 7.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
IOUtils.IOConsumer<T>
An IO operation with a single input.static interface
IOUtils.IOFunction<T,R>
A Function that may throw an IOException
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
UTF_8
UTF-8 charset string.
-
Constructor Summary
Constructors Modifier Constructor Description private
IOUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static <T> void
applyToAll(java.util.Collection<T> collection, IOUtils.IOConsumer<T> consumer)
Applies the consumer to all non-null elements in the collection even if an exception is thrown.static void
close(java.io.Closeable... objects)
Closes all given Closeables.static void
close(java.lang.Iterable<? extends java.io.Closeable> objects)
Closes all given Closeables.static void
closeWhileHandlingException(java.io.Closeable... objects)
Closes all given Closeables, suppressing all thrown exceptions.static void
closeWhileHandlingException(java.lang.Iterable<? extends java.io.Closeable> objects)
Closes all given Closeables, suppressing all thrown nonVirtualMachineError
exceptions.static void
deleteFiles(Directory dir, java.util.Collection<java.lang.String> names)
Deletes all given file names.static void
deleteFilesIfExist(java.nio.file.Path... files)
Deletes all given Paths, if they exist.static void
deleteFilesIfExist(java.util.Collection<? extends java.nio.file.Path> files)
Deletes all given Paths, if they exist.static void
deleteFilesIgnoringExceptions(java.nio.file.Path... files)
Deletes all given files, suppressing all thrown IOExceptions.static void
deleteFilesIgnoringExceptions(java.util.Collection<? extends java.nio.file.Path> files)
Deletes all given files, suppressing all thrown IOExceptions.static void
deleteFilesIgnoringExceptions(Directory dir, java.lang.String... files)
static void
deleteFilesIgnoringExceptions(Directory dir, java.util.Collection<java.lang.String> files)
Deletes all given files, suppressing all thrown IOExceptions.static void
fsync(java.nio.file.Path fileToSync, boolean isDir)
Ensure that any writes to the given file is written to the storage device that contains it.static java.io.Reader
getDecodingReader(java.io.InputStream stream, java.nio.charset.Charset charSet)
Wrapping the givenInputStream
in a reader using aCharsetDecoder
.static java.io.Reader
getDecodingReader(java.lang.Class<?> clazz, java.lang.String resource, java.nio.charset.Charset charSet)
Opens a Reader for the given resource using aCharsetDecoder
.(package private) static java.nio.file.FileStore
getFileStore(java.nio.file.Path path)
(package private) static java.lang.String
getMountPoint(java.nio.file.FileStore store)
static void
reThrow(java.lang.Throwable th)
Deprecated.This method is deprecated in favor ofrethrowAlways(java.lang.Throwable)
.static java.lang.Error
rethrowAlways(java.lang.Throwable th)
This utility method takes a previously caught (non-null)Throwable
and rethrows either the original argument if it was a subclass of theIOException
or anRuntimeException
with the cause set to the argument.static void
reThrowUnchecked(java.lang.Throwable th)
Deprecated.This method is deprecated in favor ofrethrowAlways(java.lang.Throwable)
.static void
rm(java.nio.file.Path... locations)
Deletes one or more files or directories (and everything underneath it).private static java.util.LinkedHashMap<java.nio.file.Path,java.lang.Throwable>
rm(java.util.LinkedHashMap<java.nio.file.Path,java.lang.Throwable> unremoved, java.nio.file.Path... locations)
static boolean
spins(java.nio.file.Path path)
Rough Linux-only heuristics to determine whether the providedPath
is backed by spinning storage.static boolean
spins(Directory dir)
If the dir is anFSDirectory
or wraps one via possibly nestedFilterDirectory
orFileSwitchDirectory
, this returnsspins(Path)
for the wrapped directory, else, true.(package private) static boolean
spinsLinux(java.nio.file.Path path)
static <T extends java.lang.Throwable>
TuseOrSuppress(T first, T second)
Returns the second throwable if the first is null otherwise adds the second as suppressed to the first and returns it.
-
-
-
Method Detail
-
close
public static void close(java.io.Closeable... objects) throws java.io.IOException
Closes all given Closeables. Some of the Closeables may be null; they are ignored. After everything is closed, the method either throws the first exception it hit while closing, or completes normally if there were no exceptions.- Parameters:
objects
- objects to call close() on- Throws:
java.io.IOException
-
close
public static void close(java.lang.Iterable<? extends java.io.Closeable> objects) throws java.io.IOException
Closes all given Closeables.- Throws:
java.io.IOException
- See Also:
close(Closeable...)
-
closeWhileHandlingException
public static void closeWhileHandlingException(java.io.Closeable... objects)
Closes all given Closeables, suppressing all thrown exceptions. Some of the Closeables may be null, they are ignored.- Parameters:
objects
- objects to call close() on
-
closeWhileHandlingException
public static void closeWhileHandlingException(java.lang.Iterable<? extends java.io.Closeable> objects)
Closes all given Closeables, suppressing all thrown nonVirtualMachineError
exceptions. Even if aVirtualMachineError
is thrown all given closeable are closed.
-
getDecodingReader
public static java.io.Reader getDecodingReader(java.io.InputStream stream, java.nio.charset.Charset charSet)
Wrapping the givenInputStream
in a reader using aCharsetDecoder
. Unlike Java's defaults this reader will throw an exception if your it detects the read charset doesn't match the expectedCharset
.Decoding readers are useful to load configuration files, stopword lists or synonym files to detect character set problems. However, it's not recommended to use as a common purpose reader.
- Parameters:
stream
- the stream to wrap in a readercharSet
- the expected charset- Returns:
- a wrapping reader
-
getDecodingReader
public static java.io.Reader getDecodingReader(java.lang.Class<?> clazz, java.lang.String resource, java.nio.charset.Charset charSet) throws java.io.IOException
Opens a Reader for the given resource using aCharsetDecoder
. Unlike Java's defaults this reader will throw an exception if your it detects the read charset doesn't match the expectedCharset
.Decoding readers are useful to load configuration files, stopword lists or synonym files to detect character set problems. However, it's not recommended to use as a common purpose reader.
- Parameters:
clazz
- the class used to locate the resourceresource
- the resource name to loadcharSet
- the expected charset- Returns:
- a reader to read the given file
- Throws:
java.io.IOException
-
deleteFilesIgnoringExceptions
public static void deleteFilesIgnoringExceptions(Directory dir, java.util.Collection<java.lang.String> files)
Deletes all given files, suppressing all thrown IOExceptions.Note that the files should not be null.
-
deleteFilesIgnoringExceptions
public static void deleteFilesIgnoringExceptions(Directory dir, java.lang.String... files)
-
deleteFiles
public static void deleteFiles(Directory dir, java.util.Collection<java.lang.String> names) throws java.io.IOException
Deletes all given file names. Some of the file names may be null; they are ignored. After everything is deleted, the method either throws the first exception it hit while deleting, or completes normally if there were no exceptions.- Parameters:
dir
- Directory to delete files fromnames
- file names to delete- Throws:
java.io.IOException
-
deleteFilesIgnoringExceptions
public static void deleteFilesIgnoringExceptions(java.nio.file.Path... files)
Deletes all given files, suppressing all thrown IOExceptions.Some of the files may be null, if so they are ignored.
-
deleteFilesIgnoringExceptions
public static void deleteFilesIgnoringExceptions(java.util.Collection<? extends java.nio.file.Path> files)
Deletes all given files, suppressing all thrown IOExceptions.Some of the files may be null, if so they are ignored.
-
deleteFilesIfExist
public static void deleteFilesIfExist(java.nio.file.Path... files) throws java.io.IOException
Deletes all given Paths, if they exist. Some of the Files may be null; they are ignored. After everything is deleted, the method either throws the first exception it hit while deleting, or completes normally if there were no exceptions.- Parameters:
files
- files to delete- Throws:
java.io.IOException
-
deleteFilesIfExist
public static void deleteFilesIfExist(java.util.Collection<? extends java.nio.file.Path> files) throws java.io.IOException
Deletes all given Paths, if they exist. Some of the Files may be null; they are ignored. After everything is deleted, the method either throws the first exception it hit while deleting, or completes normally if there were no exceptions.- Parameters:
files
- files to delete- Throws:
java.io.IOException
-
rm
public static void rm(java.nio.file.Path... locations) throws java.io.IOException
Deletes one or more files or directories (and everything underneath it).- Throws:
java.io.IOException
- if any of the given files (or their subhierarchy files in case of directories) cannot be removed.
-
rm
private static java.util.LinkedHashMap<java.nio.file.Path,java.lang.Throwable> rm(java.util.LinkedHashMap<java.nio.file.Path,java.lang.Throwable> unremoved, java.nio.file.Path... locations)
-
rethrowAlways
public static java.lang.Error rethrowAlways(java.lang.Throwable th) throws java.io.IOException, java.lang.RuntimeException
This utility method takes a previously caught (non-null)Throwable
and rethrows either the original argument if it was a subclass of theIOException
or anRuntimeException
with the cause set to the argument.This method never returns any value, even though it declares a return value of type
Error
. The return value declaration is very useful to let the compiler know that the code path following the invocation of this method is unreachable. So in most cases the invocation of this method will be guarded by anif
and used together with athrow
statement, as in:if (t != null) throw IOUtils.rethrowAlways(t)
- Parameters:
th
- The throwable to rethrow, must not be null.- Returns:
- This method always results in an exception, it never returns any value. See method documentation for detailsa and usage example.
- Throws:
java.io.IOException
- if the argument was an instance of IOExceptionjava.lang.RuntimeException
- with theThrowable.getCause()
set to the argument, if it was not an instance of IOException.
-
reThrow
@Deprecated public static void reThrow(java.lang.Throwable th) throws java.io.IOException
Deprecated.This method is deprecated in favor ofrethrowAlways(java.lang.Throwable)
. Code should be updated torethrowAlways(java.lang.Throwable)
and guarded with an additional null-argument check (becauserethrowAlways(java.lang.Throwable)
is not accepting null arguments).Rethrows the argument asIOException
orRuntimeException
if it's not null.- Throws:
java.io.IOException
-
reThrowUnchecked
@Deprecated public static void reThrowUnchecked(java.lang.Throwable th)
Deprecated.This method is deprecated in favor ofrethrowAlways(java.lang.Throwable)
. Code should be updated torethrowAlways(java.lang.Throwable)
and guarded with an additional null-argument check (becauserethrowAlways(java.lang.Throwable)
is not accepting null arguments).
-
fsync
public static void fsync(java.nio.file.Path fileToSync, boolean isDir) throws java.io.IOException
Ensure that any writes to the given file is written to the storage device that contains it.- Parameters:
fileToSync
- the file to fsyncisDir
- if true, the given file is a directory (we open for read and ignore IOExceptions, because not all file systems and operating systems allow to fsync on a directory)- Throws:
java.io.IOException
-
spins
public static boolean spins(Directory dir) throws java.io.IOException
If the dir is anFSDirectory
or wraps one via possibly nestedFilterDirectory
orFileSwitchDirectory
, this returnsspins(Path)
for the wrapped directory, else, true.- Throws:
java.io.IOException
- ifpath
does not exist.
-
spins
public static boolean spins(java.nio.file.Path path) throws java.io.IOException
Rough Linux-only heuristics to determine whether the providedPath
is backed by spinning storage. For example, this returns false if the disk is a solid-state disk.- Parameters:
path
- a location to check which must exist. the mount point will be determined from this location.- Returns:
- false if the storage is non-rotational (e.g. an SSD), or true if it is spinning or could not be determined
- Throws:
java.io.IOException
- ifpath
does not exist.
-
spinsLinux
static boolean spinsLinux(java.nio.file.Path path) throws java.io.IOException
- Throws:
java.io.IOException
-
getFileStore
static java.nio.file.FileStore getFileStore(java.nio.file.Path path) throws java.io.IOException
- Throws:
java.io.IOException
-
getMountPoint
static java.lang.String getMountPoint(java.nio.file.FileStore store)
-
useOrSuppress
public static <T extends java.lang.Throwable> T useOrSuppress(T first, T second)
Returns the second throwable if the first is null otherwise adds the second as suppressed to the first and returns it.
-
applyToAll
public static <T> void applyToAll(java.util.Collection<T> collection, IOUtils.IOConsumer<T> consumer) throws java.io.IOException
Applies the consumer to all non-null elements in the collection even if an exception is thrown. The first exception thrown by the consumer is re-thrown and subsequent exceptions are suppressed.- Throws:
java.io.IOException
-
-