Class FileUtilsV2_2
- Direct Known Subclasses:
FileUtils
Facilities are provided in the following areas:
- writing to a file
- reading from a file
- make a directory including parent directories
- copying files and directories
- deleting files and directories
- converting to and from a URL
- listing files and directories by filter and extension
- comparing file content
- file last changed date
- calculating a checksum
Origin of code: Excalibur, Alexandria, Commons-Utils
- Version:
- $Id: FileUtils.java 1304052 2012-03-22 20:55:29Z ggregory $
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final File[]
An empty array of typeFile
.private static final long
The file copy buffer size (30 MB)static final long
The number of bytes in an exabyte.static final long
The number of bytes in a gigabyte.static final long
The number of bytes in a kilobyte.static final long
The number of bytes in a megabyte.static final long
The number of bytes in a petabyte.static final long
The number of bytes in a terabyte.static final BigInteger
The number of bytes in a yottabyte.static final BigInteger
The number of bytes in a zettabyte. -
Constructor Summary
ConstructorsConstructorDescriptionInstances should NOT be constructed in standard programming. -
Method Summary
Modifier and TypeMethodDescriptionstatic void
cleanDirectory
(File directory) Cleans a directory without deleting it.private static void
cleanDirectoryOnExit
(File directory) Cleans a directory without deleting it.static boolean
contentEquals
(File file1, File file2) Compares the contents of two files to determine if they are equal or not.static void
copyDirectory
(File srcDir, File destDir) Copies a whole directory to a new location preserving the file dates.static void
copyDirectory
(File srcDir, File destDir, boolean preserveFileDate) Copies a whole directory to a new location.static void
copyDirectory
(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate) Copies a filtered directory to a new location.static void
Copies a file to a new location preserving the file date.static void
Copies a file to a new location.static void
copyFileToDirectory
(File srcFile, File destDir) Copies a file to a directory preserving the file date.static void
copyFileToDirectory
(File srcFile, File destDir, boolean preserveFileDate) Copies a file to a directory optionally preserving the file date.static void
deleteDirectory
(File directory) Deletes a directory recursively.private static void
deleteDirectoryOnExit
(File directory) Schedules a directory recursively for deletion on JVM exit.static boolean
deleteQuietly
(File file) Deletes a file, never throwing an exception.private static void
doCopyDirectory
(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate, List<String> exclusionList) Internal copy directory method.private static void
doCopyFile
(File srcFile, File destFile, boolean preserveFileDate) Internal copy file method.static void
forceDelete
(File file) Deletes a file.static void
forceDeleteOnExit
(File file) Schedules a file to be deleted when JVM exits.static void
forceMkdir
(File directory) Makes a directory, including any necessary but nonexistent parent directories.static boolean
Determines whether the specified file is a Symbolic Link rather than an actual file.static void
moveDirectory
(File srcDir, File destDir) Moves a directory.static void
Moves a file.static FileInputStream
openInputStream
(File file) Opens aFileInputStream
for the specified file, providing better error messages than simply callingnew FileInputStream(file)
.static FileOutputStream
openOutputStream
(File file) Opens aFileOutputStream
for the specified file, checking and creating the parent directory if it does not exist.static FileOutputStream
openOutputStream
(File file, boolean append) Opens aFileOutputStream
for the specified file, checking and creating the parent directory if it does not exist.static String
readFileToString
(File file) Reads the contents of a file into a String using the default encoding for the VM.static String
readFileToString
(File file, String encoding) Reads the contents of a file into a String.static long
Returns the size of the specified file or directory.static long
sizeOfDirectory
(File directory) Counts the size of a directory recursively (sum of the length of all files).
-
Field Details
-
ONE_KB
public static final long ONE_KBThe number of bytes in a kilobyte.- See Also:
-
ONE_MB
public static final long ONE_MBThe number of bytes in a megabyte.- See Also:
-
FILE_COPY_BUFFER_SIZE
private static final long FILE_COPY_BUFFER_SIZEThe file copy buffer size (30 MB)- See Also:
-
ONE_GB
public static final long ONE_GBThe number of bytes in a gigabyte.- See Also:
-
ONE_TB
public static final long ONE_TBThe number of bytes in a terabyte.- See Also:
-
ONE_PB
public static final long ONE_PBThe number of bytes in a petabyte.- See Also:
-
ONE_EB
public static final long ONE_EBThe number of bytes in an exabyte.- See Also:
-
ONE_ZB
The number of bytes in a zettabyte. -
ONE_YB
The number of bytes in a yottabyte. -
EMPTY_FILE_ARRAY
An empty array of typeFile
.
-
-
Constructor Details
-
FileUtilsV2_2
public FileUtilsV2_2()Instances should NOT be constructed in standard programming.
-
-
Method Details
-
openInputStream
Opens aFileInputStream
for the specified file, providing better error messages than simply callingnew FileInputStream(file)
.At the end of the method either the stream will be successfully opened, or an exception will have been thrown.
An exception is thrown if the file does not exist. An exception is thrown if the file object exists but is a directory. An exception is thrown if the file exists but cannot be read.
- Parameters:
file
- the file to open for input, must not benull
- Returns:
- a new
FileInputStream
for the specified file - Throws:
FileNotFoundException
- if the file does not existIOException
- if the file object is a directoryIOException
- if the file cannot be read- Since:
- 1.3
-
openOutputStream
Opens aFileOutputStream
for the specified file, checking and creating the parent directory if it does not exist.At the end of the method either the stream will be successfully opened, or an exception will have been thrown.
The parent directory will be created if it does not exist. The file will be created if it does not exist. An exception is thrown if the file object exists but is a directory. An exception is thrown if the file exists but cannot be written to. An exception is thrown if the parent directory cannot be created.
- Parameters:
file
- the file to open for output, must not benull
- Returns:
- a new
FileOutputStream
for the specified file - Throws:
IOException
- if the file object is a directoryIOException
- if the file cannot be written toIOException
- if a parent directory needs creating but that fails- Since:
- 1.3
-
openOutputStream
Opens aFileOutputStream
for the specified file, checking and creating the parent directory if it does not exist.At the end of the method either the stream will be successfully opened, or an exception will have been thrown.
The parent directory will be created if it does not exist. The file will be created if it does not exist. An exception is thrown if the file object exists but is a directory. An exception is thrown if the file exists but cannot be written to. An exception is thrown if the parent directory cannot be created.
- Parameters:
file
- the file to open for output, must not benull
append
- iftrue
, then bytes will be added to the end of the file rather than overwriting- Returns:
- a new
FileOutputStream
for the specified file - Throws:
IOException
- if the file object is a directoryIOException
- if the file cannot be written toIOException
- if a parent directory needs creating but that fails- Since:
- 2.1
-
contentEquals
Compares the contents of two files to determine if they are equal or not.This method checks to see if the two files are different lengths or if they point to the same file, before resorting to byte-by-byte comparison of the contents.
Code origin: Avalon
- Parameters:
file1
- the first filefile2
- the second file- Returns:
- true if the content of the files are equal or they both don't exist, false otherwise
- Throws:
IOException
- in case of an I/O error
-
copyFileToDirectory
Copies a file to a directory preserving the file date.This method copies the contents of the specified source file to a file of the same name in the specified destination directory. The destination directory is created if it does not exist. If the destination file exists, then this method will overwrite it.
Note: This method tries to preserve the file's last modified date/times using
File.setLastModified(long)
, however it is not guaranteed that the operation will succeed. If the modification operation fails, no indication is provided.- Parameters:
srcFile
- an existing file to copy, must not benull
destDir
- the directory to place the copy in, must not benull
- Throws:
NullPointerException
- if source or destination is nullIOException
- if source or destination is invalidIOException
- if an IO error occurs during copying- See Also:
-
copyFileToDirectory
public static void copyFileToDirectory(File srcFile, File destDir, boolean preserveFileDate) throws IOException Copies a file to a directory optionally preserving the file date.This method copies the contents of the specified source file to a file of the same name in the specified destination directory. The destination directory is created if it does not exist. If the destination file exists, then this method will overwrite it.
Note: Setting
preserveFileDate
totrue
tries to preserve the file's last modified date/times usingFile.setLastModified(long)
, however it is not guaranteed that the operation will succeed. If the modification operation fails, no indication is provided.- Parameters:
srcFile
- an existing file to copy, must not benull
destDir
- the directory to place the copy in, must not benull
preserveFileDate
- true if the file date of the copy should be the same as the original- Throws:
NullPointerException
- if source or destination isnull
IOException
- if source or destination is invalidIOException
- if an IO error occurs during copying- Since:
- 1.3
- See Also:
-
copyFile
Copies a file to a new location preserving the file date.This method copies the contents of the specified source file to the specified destination file. The directory holding the destination file is created if it does not exist. If the destination file exists, then this method will overwrite it.
Note: This method tries to preserve the file's last modified date/times using
File.setLastModified(long)
, however it is not guaranteed that the operation will succeed. If the modification operation fails, no indication is provided.- Parameters:
srcFile
- an existing file to copy, must not benull
destFile
- the new file, must not benull
- Throws:
NullPointerException
- if source or destination isnull
IOException
- if source or destination is invalidIOException
- if an IO error occurs during copying- See Also:
-
copyFile
public static void copyFile(File srcFile, File destFile, boolean preserveFileDate) throws IOException Copies a file to a new location.This method copies the contents of the specified source file to the specified destination file. The directory holding the destination file is created if it does not exist. If the destination file exists, then this method will overwrite it.
Note: Setting
preserveFileDate
totrue
tries to preserve the file's last modified date/times usingFile.setLastModified(long)
, however it is not guaranteed that the operation will succeed. If the modification operation fails, no indication is provided.- Parameters:
srcFile
- an existing file to copy, must not benull
destFile
- the new file, must not benull
preserveFileDate
- true if the file date of the copy should be the same as the original- Throws:
NullPointerException
- if source or destination isnull
IOException
- if source or destination is invalidIOException
- if an IO error occurs during copying- See Also:
-
doCopyFile
private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate) throws IOException Internal copy file method.- Parameters:
srcFile
- the validated source file, must not benull
destFile
- the validated destination file, must not benull
preserveFileDate
- whether to preserve the file date- Throws:
IOException
- if an error occurs
-
copyDirectory
Copies a whole directory to a new location preserving the file dates.This method copies the specified directory and all its child directories and files to the specified destination. The destination is the new location and name of the directory.
The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.
Note: This method tries to preserve the files' last modified date/times using
File.setLastModified(long)
, however it is not guaranteed that those operations will succeed. If the modification operation fails, no indication is provided.- Parameters:
srcDir
- an existing directory to copy, must not benull
destDir
- the new directory, must not benull
- Throws:
NullPointerException
- if source or destination isnull
IOException
- if source or destination is invalidIOException
- if an IO error occurs during copying- Since:
- 1.1
-
copyDirectory
public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) throws IOException Copies a whole directory to a new location.This method copies the contents of the specified source directory to within the specified destination directory.
The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.
Note: Setting
preserveFileDate
totrue
tries to preserve the files' last modified date/times usingFile.setLastModified(long)
, however it is not guaranteed that those operations will succeed. If the modification operation fails, no indication is provided.- Parameters:
srcDir
- an existing directory to copy, must not benull
destDir
- the new directory, must not benull
preserveFileDate
- true if the file date of the copy should be the same as the original- Throws:
NullPointerException
- if source or destination isnull
IOException
- if source or destination is invalidIOException
- if an IO error occurs during copying- Since:
- 1.1
-
copyDirectory
public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate) throws IOException Copies a filtered directory to a new location.This method copies the contents of the specified source directory to within the specified destination directory.
The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.
Note: Setting
preserveFileDate
totrue
tries to preserve the files' last modified date/times usingFile.setLastModified(long)
, however it is not guaranteed that those operations will succeed. If the modification operation fails, no indication is provided.Example: Copy directories only
// only copy the directory structure FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY, false);
Example: Copy directories and txt files
// Create a filter for ".txt" files IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt"); IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter); // Create a filter for either directories or ".txt" files FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles); // Copy using the filter FileUtils.copyDirectory(srcDir, destDir, filter, false);
- Parameters:
srcDir
- an existing directory to copy, must not benull
destDir
- the new directory, must not benull
filter
- the filter to apply, null means copy all directories and filespreserveFileDate
- true if the file date of the copy should be the same as the original- Throws:
NullPointerException
- if source or destination isnull
IOException
- if source or destination is invalidIOException
- if an IO error occurs during copying- Since:
- 1.4
-
doCopyDirectory
private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate, List<String> exclusionList) throws IOException Internal copy directory method.- Parameters:
srcDir
- the validated source directory, must not benull
destDir
- the validated destination directory, must not benull
filter
- the filter to apply, null means copy all directories and filespreserveFileDate
- whether to preserve the file dateexclusionList
- List of files and directories to exclude from the copy, may be null- Throws:
IOException
- if an error occurs- Since:
- 1.1
-
deleteDirectory
Deletes a directory recursively.- Parameters:
directory
- directory to delete- Throws:
IOException
- in case deletion is unsuccessful
-
deleteQuietly
Deletes a file, never throwing an exception. If file is a directory, delete it and all sub-directories.The difference between File.delete() and this method are:
- A directory to be deleted does not have to be empty.
- No exceptions are thrown when a file or directory cannot be deleted.
- Parameters:
file
- file or directory to delete, can benull
- Returns:
true
if the file or directory was deleted, otherwisefalse
- Since:
- 1.4
-
cleanDirectory
Cleans a directory without deleting it.- Parameters:
directory
- directory to clean- Throws:
IOException
- in case cleaning is unsuccessful
-
readFileToString
Reads the contents of a file into a String. The file is always closed.- Parameters:
file
- the file to read, must not benull
encoding
- the encoding to use,null
means platform default- Returns:
- the file contents, never
null
- Throws:
IOException
- in case of an I/O errorUnsupportedEncodingException
- if the encoding is not supported by the VM
-
readFileToString
Reads the contents of a file into a String using the default encoding for the VM. The file is always closed.- Parameters:
file
- the file to read, must not benull
- Returns:
- the file contents, never
null
- Throws:
IOException
- in case of an I/O error- Since:
- 1.3.1
-
forceDelete
Deletes a file. If file is a directory, delete it and all sub-directories.The difference between File.delete() and this method are:
- A directory to be deleted does not have to be empty.
- You get exceptions when a file or directory cannot be deleted. (java.io.File methods returns a boolean)
- Parameters:
file
- file or directory to delete, must not benull
- Throws:
NullPointerException
- if the directory isnull
FileNotFoundException
- if the file was not foundIOException
- in case deletion is unsuccessful
-
forceDeleteOnExit
Schedules a file to be deleted when JVM exits. If file is directory delete it and all sub-directories.- Parameters:
file
- file or directory to delete, must not benull
- Throws:
NullPointerException
- if the file isnull
IOException
- in case deletion is unsuccessful
-
deleteDirectoryOnExit
Schedules a directory recursively for deletion on JVM exit.- Parameters:
directory
- directory to delete, must not benull
- Throws:
NullPointerException
- if the directory isnull
IOException
- in case deletion is unsuccessful
-
cleanDirectoryOnExit
Cleans a directory without deleting it.- Parameters:
directory
- directory to clean, must not benull
- Throws:
NullPointerException
- if the directory isnull
IOException
- in case cleaning is unsuccessful
-
forceMkdir
Makes a directory, including any necessary but nonexistent parent directories. If a file already exists with specified name but it is not a directory then an IOException is thrown. If the directory cannot be created (or does not already exist) then an IOException is thrown.- Parameters:
directory
- directory to create, must not benull
- Throws:
NullPointerException
- if the directory isnull
IOException
- if the directory cannot be created or the file already exists but is not a directory
-
sizeOf
Returns the size of the specified file or directory. If the providedFile
is a regular file, then the file's length is returned. If the argument is a directory, then the size of the directory is calculated recursively. If a directory or subdirectory is security restricted, its size will not be included.- Parameters:
file
- the regular file or directory to return the size of (must not benull
).- Returns:
- the length of the file, or recursive size of the directory, provided (in bytes).
- Throws:
NullPointerException
- if the file isnull
IllegalArgumentException
- if the file does not exist.- Since:
- 2.0
-
sizeOfDirectory
Counts the size of a directory recursively (sum of the length of all files).- Parameters:
directory
- directory to inspect, must not benull
- Returns:
- size of directory in bytes, 0 if directory is security restricted
- Throws:
NullPointerException
- if the directory isnull
-
moveDirectory
Moves a directory.When the destination directory is on another file system, do a "copy and delete".
- Parameters:
srcDir
- the directory to be moveddestDir
- the destination directory- Throws:
NullPointerException
- if source or destination isnull
FileExistsException
- if the destination directory existsIOException
- if source or destination is invalidIOException
- if an IO error occurs moving the file- Since:
- 1.4
-
moveFile
Moves a file.When the destination file is on another file system, do a "copy and delete".
- Parameters:
srcFile
- the file to be moveddestFile
- the destination file- Throws:
NullPointerException
- if source or destination isnull
FileExistsException
- if the destination file existsIOException
- if source or destination is invalidIOException
- if an IO error occurs moving the file- Since:
- 1.4
-
isSymlink
Determines whether the specified file is a Symbolic Link rather than an actual file.Will not return true if there is a Symbolic Link anywhere in the path, only if the specific file is.
Note: the current implementation always returns
false
if the system is detected as Windows usingFilenameUtils.isSystemWindows()
- Parameters:
file
- the file to check- Returns:
- true if the file is a Symbolic Link
- Throws:
IOException
- if an IO error occurs while checking the file- Since:
- 2.0
-