com.xmlmind.util
Class FileUtil

java.lang.Object
  extended by com.xmlmind.util.FileUtil

public final class FileUtil
extends java.lang.Object

A collection of utility functions (static methods) operating on Files.


Field Summary
static java.io.File[] EMPTY_LIST
          A ready-to-use empty list of Files.
 
Method Summary
static void checkedCreateNewFile(java.io.File file)
          Like java.io.File.createNewFile() but raises an IOException if this method returns false.
static void checkedDelete(java.io.File file)
          Like java.io.File.delete() but raises an IOException if this method returns false.
static java.lang.String[] checkedList(java.io.File dir)
          Like java.io.File.list() but raises an IOException if this method returns null.
static java.lang.String[] checkedList(java.io.File dir, java.io.FilenameFilter filter)
          Like java.io.File.list(FilenameFilter) but raises an IOException if this method returns null.
static java.io.File[] checkedListFiles(java.io.File dir)
          Like java.io.File.listFiles() but raises an IOException if this method returns null.
static java.io.File[] checkedListFiles(java.io.File dir, java.io.FileFilter filter)
          Like java.io.File.listFiles(FileFilter) but raises an IOException if this method returns null.
static java.io.File[] checkedListFiles(java.io.File dir, java.io.FilenameFilter filter)
          Like java.io.File.listFiles(FilenameFilter) but raises an IOException if this method returns null.
static void checkedMkdir(java.io.File dir)
          Like java.io.File.mkdir() but raises an IOException if this method returns false.
static void checkedMkdirs(java.io.File dir)
          Like java.io.File.mkdirs() but raises an IOException if this method returns false.
static void checkedRename(java.io.File from, java.io.File to)
          Like java.io.File.renameTo() but raises an IOException if this method returns false.
static void checkedSetLastModified(java.io.File file, long date)
          Like java.io.File.setLastModified() but raises an IOException if this method returns false.
static void checkIsEmptyDir(java.io.File file)
          Check whether if specified file exists, is a directory and is empty.
static void copyBytes(java.io.InputStream in, java.io.OutputStream out)
          Copies input to output.
static void copyDir(java.io.File srcDir, java.io.File dstDir, boolean sameDate)
          Recursively copies specified directory.
static void copyDir(java.io.File srcDir, java.io.File dstDir, boolean sameDate, Console console)
          Recursively copies specified directory.
static void copyFile(java.io.File srcFile, java.io.File dstFile)
          Copies specified file (not a directory).
static void copyFile(java.io.File srcFile, java.io.File dstFile, boolean sameDate)
          Copies specified file (not a directory).
static void copyFile(java.io.File srcFile, java.io.File dstFile, boolean sameDate, Console console)
          Copies specified file (not a directory).
static void copyFile(java.io.File srcFile, java.io.OutputStream dst)
          Copies specified file to specified destination.
static void copyFile(java.io.InputStream src, java.io.File dstFile)
          Copies specified source to specified file.
static void copyFile(java.io.InputStream in, java.io.OutputStream out)
          Copies input to output.
static void copyFile(java.net.URL url, java.io.File dstFile)
          Copies the contents of specified URL to specified file.
static void copyFileOrDir(java.io.File srcFileOrDir, java.io.File dstFileOrDir, boolean sameDate)
          Copies specified file or directory.
static void copyFileOrDir(java.io.File srcFileOrDir, java.io.File dstFileOrDir, boolean sameDate, Console console)
          Copies specified file or directory.
static java.io.File createTempDirectory(java.lang.String prefix, java.io.File directory)
          Create a temporary directory.
static void deleteDir(java.io.File dir)
          Deletes specified directory.
static void deleteDir(java.io.File dir, Console console)
          Deletes specified directory.
static void deleteFile(java.io.File file)
          Deletes specified file (not a directory).
static void deleteFile(java.io.File file, Console console)
          Deletes specified file (not a directory).
static void deleteFileOrDir(java.io.File fileOrDir)
          Deletes specified file or directory.
static void deleteFileOrDir(java.io.File fileOrDir, Console console)
          Deletes specified file or directory.
static boolean doDeleteFileOrDir(java.io.File fileOrDir)
          Deletes specified file or directory.
static boolean doEmptyDir(java.io.File dir)
          Removes all the files contained in specified directory.
static void emptyDir(java.io.File dir)
          Removes all the files contained in specified directory.
static java.net.URI fileToURI(java.io.File file)
          Similar to fileToURL(java.io.File), expect that it returns an URI.
static java.net.URL fileToURL(java.io.File file)
          Converts a File to a file: URL.
static java.lang.String formatFileSize(long fileSize)
          Equivalent to formatFileSize(fileSize, null).
static java.lang.String formatFileSize(long fileSize, java.util.Locale locale)
          Returns a localized, formatted, form of specified file size.
static java.lang.String getExtension(java.io.File file)
          Returns the extension of specified file.
static java.lang.String getExtension(java.lang.String path)
          Similar to getExtension(File) except that it acts on a filename rather than on a File.
static java.lang.String getRelativePath(java.io.File file, java.io.File base)
          Returns the path of specified file relative to specified base.
static java.lang.String getVolume(java.io.File file)
          Returns the volume of specified file.
static int indexOfDot(java.lang.String path, char separatorChar)
          Returns the extension of specified path.
static boolean isEmptyDir(java.io.File file)
          Returns true if specified file exists, is a directory and is empty.
static boolean isGzipped(byte[] bytes)
          Tests if specified data has been compressed using gzip.
static byte[] loadBytes(java.io.File file)
          Loads the content of a binary file.
static byte[] loadBytes(java.io.InputStream in)
          Loads the content of an InputStream returning binary data.
static java.lang.String loadString(java.io.File file)
          Loads the content of a text file.
static java.lang.String loadString(java.io.File file, java.lang.String charsetName)
          Loads the content of a text file.
static java.lang.String loadString(java.io.InputStream stream, java.lang.String charsetName)
          Loads the content of an InputStream returning text.
static void saveBytes(byte[] bytes, java.io.File file)
          Saves binary data to a file.
static void saveString(java.lang.String string, java.io.File file)
          Saves some text to a file.
static void saveString(java.lang.String string, java.io.File file, java.lang.String charsetName)
          Saves some text to a file.
static void saveString(java.lang.String string, java.io.OutputStream stream, java.lang.String charsetName)
          Saves some text to an OutputStream.
static java.io.File setExtension(java.io.File file, java.lang.String extension)
          Changes the extension of specified file to specified extension.
static java.lang.String setExtension(java.lang.String path, java.lang.String extension)
          Similar to setExtension(File, String) except that it acts on a filename rather than on a File.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY_LIST

public static final java.io.File[] EMPTY_LIST
A ready-to-use empty list of Files.

Method Detail

fileToURI

public static java.net.URI fileToURI(java.io.File file)
Similar to fileToURL(java.io.File), expect that it returns an URI.

See Also:
URLUtil.urlToURI(java.net.URL)

fileToURL

public static java.net.URL fileToURL(java.io.File file)
Converts a File to a file: URL. Ends with a '/' if specified file is a directory.

On Windows, this function supports UNC filenames. For example, it converts "\\foo\bar\gee.txt" to "file://foo/bar/gee.txt". (Note that URL.openStream works fine on such URL.)

Parameters:
file - the file to be converted
Returns:
a file: URL
See Also:
URLUtil.urlToFile(java.net.URL)

getExtension

public static java.lang.String getExtension(java.io.File file)
Returns the extension of specified file. To make it simple, the substring after last '.', not including last '.'.

Parameters:
file - absolute or relative pathname possibly having an extension
Returns:
extension if any; null otherwise
See Also:
setExtension(java.io.File, java.lang.String)

getExtension

public static java.lang.String getExtension(java.lang.String path)
Similar to getExtension(File) except that it acts on a filename rather than on a File.


indexOfDot

public static int indexOfDot(java.lang.String path,
                             char separatorChar)
Returns the extension of specified path. To make it simple, the substring after last '.', not including last '.'.

Parameters:
path - an absolute or relative path
separatorChar - the character used to separate path segments
Returns:
extension if any; null otherwise

setExtension

public static java.io.File setExtension(java.io.File file,
                                        java.lang.String extension)
Changes the extension of specified file to specified extension. See getExtension(java.io.File) for a description of the extension of a pathname.

Parameters:
file - absolute or relative pathname
extension - new extension. May be null which means: remove the extension.
Returns:
a pathname identical to file except that its extension has been changed or removed.

Returns same pathname if specified pathname ends with File.separator.


setExtension

public static java.lang.String setExtension(java.lang.String path,
                                            java.lang.String extension)
Similar to setExtension(File, String) except that it acts on a filename rather than on a File.


getRelativePath

public static java.lang.String getRelativePath(java.io.File file,
                                               java.io.File base)
Returns the path of specified file relative to specified base.

Example: returns ../local/bin/html2ps for /usr/local/bin/html2ps relative to /usr/bin/grep.

Parameters:
file - a relative or absolute filename
base - another a relative or absolute filename
Returns:
first filename as a filename relative to the second filename. Returns first filename as is, if the relative filename cannot be computed.

getVolume

public static java.lang.String getVolume(java.io.File file)
Returns the volume of specified file.

Returns something like "C:" or "\\server\share" on Windows. Returns "" on all the other platforms.

Parameters:
file - a relative or absolute filename
Returns:
the volume of specified file or null if specified filename is malformed (e.g. "\\server").

checkedDelete

public static void checkedDelete(java.io.File file)
                          throws java.io.IOException
Like java.io.File.delete() but raises an IOException if this method returns false.

Throws:
java.io.IOException

checkedRename

public static void checkedRename(java.io.File from,
                                 java.io.File to)
                          throws java.io.IOException
Like java.io.File.renameTo() but raises an IOException if this method returns false.

Throws:
java.io.IOException

checkedMkdir

public static void checkedMkdir(java.io.File dir)
                         throws java.io.IOException
Like java.io.File.mkdir() but raises an IOException if this method returns false.

Throws:
java.io.IOException

checkedMkdirs

public static void checkedMkdirs(java.io.File dir)
                          throws java.io.IOException
Like java.io.File.mkdirs() but raises an IOException if this method returns false.

Unlike java.io.File.mkdirs() which does not seem to be thread-safe, this variant is thread-safe.

Throws:
java.io.IOException

checkedListFiles

public static java.io.File[] checkedListFiles(java.io.File dir)
                                       throws java.io.IOException
Like java.io.File.listFiles() but raises an IOException if this method returns null.

Throws:
java.io.IOException

checkedListFiles

public static java.io.File[] checkedListFiles(java.io.File dir,
                                              java.io.FilenameFilter filter)
                                       throws java.io.IOException
Like java.io.File.listFiles(FilenameFilter) but raises an IOException if this method returns null.

Throws:
java.io.IOException

checkedListFiles

public static java.io.File[] checkedListFiles(java.io.File dir,
                                              java.io.FileFilter filter)
                                       throws java.io.IOException
Like java.io.File.listFiles(FileFilter) but raises an IOException if this method returns null.

Throws:
java.io.IOException

checkedList

public static java.lang.String[] checkedList(java.io.File dir)
                                      throws java.io.IOException
Like java.io.File.list() but raises an IOException if this method returns null.

Throws:
java.io.IOException

checkedList

public static java.lang.String[] checkedList(java.io.File dir,
                                             java.io.FilenameFilter filter)
                                      throws java.io.IOException
Like java.io.File.list(FilenameFilter) but raises an IOException if this method returns null.

Throws:
java.io.IOException

checkedSetLastModified

public static void checkedSetLastModified(java.io.File file,
                                          long date)
                                   throws java.io.IOException
Like java.io.File.setLastModified() but raises an IOException if this method returns false.

Throws:
java.io.IOException

checkedCreateNewFile

public static void checkedCreateNewFile(java.io.File file)
                                 throws java.io.IOException
Like java.io.File.createNewFile() but raises an IOException if this method returns false.

Throws:
java.io.IOException

createTempDirectory

public static java.io.File createTempDirectory(java.lang.String prefix,
                                               java.io.File directory)
                                        throws java.io.IOException
Create a temporary directory.

Parameters:
prefix - the prefix string to be used in generating the diretory name; must be at least three characters long
directory - the directory in which the new directory is to be created, or null if the default temporary-file directory is to be used
Returns:
the newly created temporary directory
Throws:
java.io.IOException - if the temporary directory cannot be created

formatFileSize

public static java.lang.String formatFileSize(long fileSize)
Equivalent to formatFileSize(fileSize, null).


formatFileSize

public static java.lang.String formatFileSize(long fileSize,
                                              java.util.Locale locale)
Returns a localized, formatted, form of specified file size.

For example, returns "56.5Gb" when passed 59279560 in the US locale.


emptyDir

public static void emptyDir(java.io.File dir)
                     throws java.io.IOException
Removes all the files contained in specified directory.

Parameters:
dir - directory to be made empty
Throws:
java.io.IOException - if, for any reason, the directory cannot be made empty

doEmptyDir

public static boolean doEmptyDir(java.io.File dir)
Removes all the files contained in specified directory.

Parameters:
dir - directory to be made empty
Returns:
true if the directory has been made empty; false otherwise

isEmptyDir

public static boolean isEmptyDir(java.io.File file)
Returns true if specified file exists, is a directory and is empty. Returns false otherwise.

See Also:
checkIsEmptyDir(java.io.File)

checkIsEmptyDir

public static void checkIsEmptyDir(java.io.File file)
                            throws java.io.IOException
Check whether if specified file exists, is a directory and is empty. If this is not the case, throw an IOException.

Throws:
java.io.IOException
See Also:
isEmptyDir(java.io.File)

deleteFileOrDir

public static void deleteFileOrDir(java.io.File fileOrDir,
                                   Console console)
                            throws java.io.IOException
Deletes specified file or directory. A directory is recursively deleted.

Parameters:
fileOrDir - file or directory to be deleted
console - a message describing the operation is displayed on this console. May be null.
Throws:
java.io.IOException - if, for any reason, specified file or directory cannot be deleted

deleteDir

public static void deleteDir(java.io.File dir,
                             Console console)
                      throws java.io.IOException
Deletes specified directory. A directory is recursively deleted.

Parameters:
dir - directory to be deleted
console - a message describing the operation is displayed on this console. May be null.
Throws:
java.io.IOException - if, for any reason, specified directory cannot be deleted

deleteFile

public static void deleteFile(java.io.File file,
                              Console console)
                       throws java.io.IOException
Deletes specified file (not a directory).

Parameters:
file - file to be deleted
console - a message describing the operation is displayed on this console. May be null.
Throws:
java.io.IOException - if, for any reason, specified file cannot be deleted

deleteFileOrDir

public static void deleteFileOrDir(java.io.File fileOrDir)
                            throws java.io.IOException
Deletes specified file or directory. A directory is recursively deleted.

Parameters:
fileOrDir - file or directory to be deleted
Throws:
java.io.IOException - if, for any reason, specified file or directory cannot be deleted

doDeleteFileOrDir

public static boolean doDeleteFileOrDir(java.io.File fileOrDir)
Deletes specified file or directory. A directory is recursively deleted.

Parameters:
fileOrDir - file or directory to be deleted
Returns:
true if specified file or directory has been deleted; false otherwise

deleteDir

public static void deleteDir(java.io.File dir)
                      throws java.io.IOException
Deletes specified directory. A directory is recursively deleted.

Parameters:
dir - directory to be deleted
Throws:
java.io.IOException - if, for any reason, specified directory cannot be deleted

deleteFile

public static void deleteFile(java.io.File file)
                       throws java.io.IOException
Deletes specified file (not a directory).

Parameters:
file - file to be deleted
Throws:
java.io.IOException - if, for any reason, specified file cannot be deleted

copyFileOrDir

public static void copyFileOrDir(java.io.File srcFileOrDir,
                                 java.io.File dstFileOrDir,
                                 boolean sameDate,
                                 Console console)
                          throws java.io.IOException
Copies specified file or directory. Directories are recursively copied.

If a directory is to be copied, the target of the copy operation must not exist. If a file is to be copied and the target of the copy operation already exists, this target is overwritten.

Parameters:
srcFileOrDir - file or directory to be copied
dstFileOrDir - target of the copy operation
sameDate - if true, a copied file has the same last modified date as the original file. If false, a copied file has the date of its creation as its last modified date.
console - a message describing the operation is displayed on this console. May be null.
Throws:
java.io.IOException - if, for any reason, specified file or directory cannot be copied

copyDir

public static void copyDir(java.io.File srcDir,
                           java.io.File dstDir,
                           boolean sameDate,
                           Console console)
                    throws java.io.IOException
Recursively copies specified directory. The target of the copy operation must not exist.

Parameters:
srcDir - directory to be copied
dstDir - target of the copy operation
sameDate - if true, a copied file has the same last modified date as the original file. If false, a copied file has the date of its creation as its last modified date.
console - a message describing the operation is displayed on this console. May be null.
Throws:
java.io.IOException - if, for any reason, specified directory cannot be copied

copyFile

public static void copyFile(java.io.File srcFile,
                            java.io.File dstFile,
                            boolean sameDate,
                            Console console)
                     throws java.io.IOException
Copies specified file (not a directory). If the target of the copy operation already exists, this target is overwritten.

Parameters:
srcFile - file to be copied
dstFile - target of the copy operation
sameDate - if true, a copied file has the same last modified date as the original file. If false, a copied file has the date of its creation as its last modified date.
console - a message describing the operation is displayed on this console. May be null.
Throws:
java.io.IOException - if, for any reason, specified file cannot be copied

copyFileOrDir

public static void copyFileOrDir(java.io.File srcFileOrDir,
                                 java.io.File dstFileOrDir,
                                 boolean sameDate)
                          throws java.io.IOException
Copies specified file or directory. Directories are recursively copied.

If a directory is to be copied, the target of the copy operation must not exist. If a file is to be copied and the target of the copy operation already exists, this target is overwritten.

Parameters:
srcFileOrDir - file or directory to be copied
dstFileOrDir - target of the copy operation
sameDate - if true, a copied file has the same last modified date as the original file. If false, a copied file has the date of its creation as its last modified date.
Throws:
java.io.IOException - if, for any reason, specified file or directory cannot be copied

copyDir

public static void copyDir(java.io.File srcDir,
                           java.io.File dstDir,
                           boolean sameDate)
                    throws java.io.IOException
Recursively copies specified directory. The target of the copy operation must not exist.

Parameters:
srcDir - directory to be copied
dstDir - target of the copy operation
sameDate - if true, a copied file has the same last modified date as the original file. If false, a copied file has the date of its creation as its last modified date.
Throws:
java.io.IOException - if, for any reason, specified directory cannot be copied

copyFile

public static void copyFile(java.io.File srcFile,
                            java.io.File dstFile,
                            boolean sameDate)
                     throws java.io.IOException
Copies specified file (not a directory). If the target of the copy operation already exists, this target is overwritten.

Parameters:
srcFile - file to be copied
dstFile - target of the copy operation
sameDate - if true, a copied file has the same last modified date as the original file. If false, a copied file has the date of its creation as its last modified date.
Throws:
java.io.IOException - if, for any reason, specified file cannot be copied

copyFile

public static void copyFile(java.io.File srcFile,
                            java.io.File dstFile)
                     throws java.io.IOException
Copies specified file (not a directory). If the target of the copy operation already exists, this target is overwritten.

Parameters:
srcFile - file to be copied
dstFile - target of the copy operation
Throws:
java.io.IOException - if, for any reason, specified file cannot be copied

copyFile

public static void copyFile(java.net.URL url,
                            java.io.File dstFile)
                     throws java.io.IOException
Copies the contents of specified URL to specified file.

Parameters:
url - URL to be copied
dstFile - destination file
Throws:
java.io.IOException - if an I/O problem occurs

copyFile

public static void copyFile(java.io.InputStream src,
                            java.io.File dstFile)
                     throws java.io.IOException
Copies specified source to specified file.

Parameters:
src - source stream
dstFile - destination file
Throws:
java.io.IOException - if an I/O problem occurs

copyFile

public static void copyFile(java.io.File srcFile,
                            java.io.OutputStream dst)
                     throws java.io.IOException
Copies specified file to specified destination.

Parameters:
srcFile - source file
dst - destination stream
Throws:
java.io.IOException - if an I/O problem occurs

copyFile

public static final void copyFile(java.io.InputStream in,
                                  java.io.OutputStream out)
                           throws java.io.IOException
Copies input to output. Does not close streams after copying the data.

Throws:
java.io.IOException
See Also:
copyBytes(java.io.InputStream, java.io.OutputStream)

loadString

public static java.lang.String loadString(java.io.File file)
                                   throws java.io.IOException
Loads the content of a text file. The encoding of the text is assumed to be the native encoding of the platform.

Parameters:
file - the text file
Returns:
the loaded String
Throws:
java.io.IOException - if there is an I/O problem

loadString

public static java.lang.String loadString(java.io.File file,
                                          java.lang.String charsetName)
                                   throws java.io.IOException
Loads the content of a text file. The encoding of the text is assumed to be the native encoding of the platform.

Parameters:
file - the text file
charsetName - the IANA charset of the text source if known; null may be used to specify the native encoding of the platform
Returns:
the loaded String
Throws:
java.io.IOException - if there is an I/O problem

loadString

public static java.lang.String loadString(java.io.InputStream stream,
                                          java.lang.String charsetName)
                                   throws java.io.IOException
Loads the content of an InputStream returning text.

Parameters:
stream - the text source
charsetName - the IANA charset of the text source if known; null may be used to specify the native encoding of the platform
Returns:
the loaded String
Throws:
java.io.IOException - if there is an I/O problem

saveString

public static void saveString(java.lang.String string,
                              java.io.File file)
                       throws java.io.IOException
Saves some text to a file.

Parameters:
string - the text to be saved
file - the destination file
Throws:
java.io.IOException - if there is an I/O problem

saveString

public static void saveString(java.lang.String string,
                              java.io.File file,
                              java.lang.String charsetName)
                       throws java.io.IOException
Saves some text to a file.

Parameters:
string - the text to be saved
file - the destination file
charsetName - the IANA charset of the saved file; null may be used to specify the native encoding of the platform
Throws:
java.io.IOException - if there is an I/O problem

saveString

public static void saveString(java.lang.String string,
                              java.io.OutputStream stream,
                              java.lang.String charsetName)
                       throws java.io.IOException
Saves some text to an OutputStream.

Parameters:
string - the text to be saved
stream - the text sink
charsetName - the IANA charset of the saved characters; null may be used to specify the native encoding of the platform
Throws:
java.io.IOException - if there is an I/O problem

isGzipped

public static final boolean isGzipped(byte[] bytes)
Tests if specified data has been compressed using gzip.


copyBytes

public static final void copyBytes(java.io.InputStream in,
                                   java.io.OutputStream out)
                            throws java.io.IOException
Copies input to output. Closes both streams after copying the data.

Throws:
java.io.IOException
See Also:
copyFile(InputStream, OutputStream)

loadBytes

public static byte[] loadBytes(java.io.File file)
                        throws java.io.IOException
Loads the content of a binary file.

Parameters:
file - the binary file
Returns:
the loaded bytes
Throws:
java.io.IOException - if there is an I/O problem

loadBytes

public static byte[] loadBytes(java.io.InputStream in)
                        throws java.io.IOException
Loads the content of an InputStream returning binary data.

Parameters:
in - the binary data source
Returns:
the loaded bytes
Throws:
java.io.IOException - if there is an I/O problem

saveBytes

public static void saveBytes(byte[] bytes,
                             java.io.File file)
                      throws java.io.IOException
Saves binary data to a file.

Parameters:
bytes - the binary data to be saved
file - the destination file
Throws:
java.io.IOException - if there is an I/O problem