org.apache.maven.it.util
Class FileUtils

java.lang.Object
  extended by org.apache.maven.it.util.FileUtils

public class FileUtils
extends Object

This class provides basic facilities for manipulating files and file paths.

Path-related methods

Methods exist to retrieve the components of a typical file path. For example /www/hosted/mysite/index.html, can be broken into:

There are also methods to concatenate two paths, resolve a path relative to a File and normalize(java.lang.String) a path.

File-related methods

There are methods to create a File from a URL, copy a File to a directory, copy a File to another File, copy a URL's contents to a File, as well as methods to delete and clean a directory.

Common File manipulation routines.

Taken from the commons-utils repo. Also code from Alexandria's FileUtils. And from Avalon Excalibur's IO. And from Ant.

Version:
$Id: FileUtils.java 723852 2008-12-05 20:28:26Z bentmann $
Author:
Kevin A. Burton, Scott Sanders, Daniel Rall, Christoph.Reck, Peter Donald, Jeff Turner

Nested Class Summary
static class FileUtils.FilterWrapper
           
 
Field Summary
static String FS
           
static int ONE_GB
          The number of bytes in a gigabyte.
static int ONE_KB
          The number of bytes in a kilobyte.
static int ONE_MB
          The number of bytes in a megabyte.
 
Constructor Summary
FileUtils()
           
 
Method Summary
static String basename(String filename)
          Returns the filename portion of a file specification string.
static String basename(String filename, String suffix)
          Returns the filename portion of a file specification string.
static String byteCountToDisplaySize(int size)
          Returns a human-readable version of the file size (original is in bytes).
static String catPath(String lookupPath, String path)
          Will concatenate 2 paths.
static void cleanDirectory(File directory)
          Clean a directory without deleting it.
static void cleanDirectory(String directory)
          Clean a directory without deleting it.
static boolean contentEquals(File file1, File file2)
          Compare the contents of two files to determine if they are equal or not.
static void copyDirectory(File sourceDirectory, File destinationDirectory)
           
static void copyDirectory(File sourceDirectory, File destinationDirectory, String includes, String excludes)
           
static void copyDirectoryStructure(File sourceDirectory, File destinationDirectory)
          Copies a entire directory structure.
static void copyDirectoryStructureIfModified(File sourceDirectory, File destinationDirectory)
          Copies an entire directory structure but only source files with timestamp later than the destinations'.
static void copyFile(File source, File destination)
          Copy file from source to destination.
static void copyFile(File from, File to, String encoding, FileUtils.FilterWrapper[] wrappers)
           
static boolean copyFileIfModified(File source, File destination)
          Copy file from source to destination only if source timestamp is later than the destination timestamp.
static void copyFileToDirectory(File source, File destinationDirectory)
          Copy file from source to destination.
static void copyFileToDirectory(String source, String destinationDirectory)
          Copy file from source to destination.
static void copyFileToDirectoryIfModified(File source, File destinationDirectory)
          Copy file from source to destination only if source is newer than the target file.
static void copyFileToDirectoryIfModified(String source, String destinationDirectory)
          Copy file from source to destination only if source is newer than the target file.
static void copyURLToFile(URL source, File destination)
          Copies bytes from the URL source to a file destination.
static File createTempFile(String prefix, String suffix, File parentDir)
          Create a temporary file in a given directory.
static void deleteDirectory(File directory)
          Recursively delete a directory.
static void deleteDirectory(String directory)
          Recursively delete a directory.
static String dirname(String filename)
          Returns the directory path portion of a file specification string.
static String extension(String filename)
          Returns the extension portion of a file specification string.
static void fileAppend(String fileName, String data)
          Appends data to a file.
static void fileDelete(String fileName)
          Deletes a file.
static boolean fileExists(String fileName)
          Check if a file exits.
static String filename(String filename)
          Returns the filename portion of a file specification string.
static String fileRead(File file)
           
static String fileRead(File file, String encoding)
           
static String fileRead(String file)
           
static void fileWrite(String fileName, String data)
          Writes data to a file.
static void fileWrite(String fileName, String encoding, String data)
          Writes data to a file.
static void forceDelete(File file)
          Delete a file.
static void forceDelete(String file)
          Delete a file.
static void forceDeleteOnExit(File file)
          Schedule a file to be deleted when JVM exits.
static void forceMkdir(File file)
          Make a directory.
static String[] getDefaultExcludes()
           
static List getDefaultExcludesAsList()
           
static List getDirectoryNames(File directory, String includes, String excludes, boolean includeBasedir)
          Return a list of directories as String depending options.
static List getDirectoryNames(File directory, String includes, String excludes, boolean includeBasedir, boolean isCaseSensitive)
          Return a list of directories as String depending options.
static String getExtension(String filename)
          Get extension from filename.
static File getFile(String fileName)
          Creates a file handle.
static List getFileAndDirectoryNames(File directory, String includes, String excludes, boolean includeBasedir, boolean isCaseSensitive, boolean getFiles, boolean getDirectories)
          Return a list of files as String depending options.
static List getFileNames(File directory, String includes, String excludes, boolean includeBasedir)
          Return a list of files as String depending options.
static List getFileNames(File directory, String includes, String excludes, boolean includeBasedir, boolean isCaseSensitive)
          Return a list of files as String depending options.
static List getFiles(File directory, String includes, String excludes)
          Return the files contained in the directory, using inclusion and exclusion Ant patterns, including the directory name in each of the files
static List getFiles(File directory, String includes, String excludes, boolean includeBasedir)
          Return the files contained in the directory, using inclusion and exclusion Ant patterns
static String[] getFilesFromExtension(String directory, String[] extensions)
          Given a directory and an array of extensions return an array of compliant files.
static String getPath(String filepath)
          Get path from filename.
static String getPath(String filepath, char fileSeparatorChar)
          Get path from filename.
static List loadFile(File file)
           
static void mkdir(String dir)
          Simple way to make a directory
static String normalize(String path)
          Normalize a path.
static String removeExtension(String filename)
          Remove extension from filename.
static String removePath(String filepath)
          Remove path from filename.
static String removePath(String filepath, char fileSeparatorChar)
          Remove path from filename.
static void rename(File from, File to)
          Renames a file, even if that involves crossing file system boundaries.
static File resolveFile(File baseFile, String filename)
          Resolve a file filename to it's canonical form.
static long sizeOfDirectory(File directory)
          Recursively count size of a directory.
static long sizeOfDirectory(String directory)
          Recursively count size of a directory.
static File toFile(URL url)
          Convert from a URL to a File.
static URL[] toURLs(File[] files)
          Convert the array of Files into a list of URLs.
static boolean waitFor(File file, int seconds)
           
static boolean waitFor(String fileName, int seconds)
          Waits for NFS to propagate a file creation, imposing a timeout.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ONE_KB

public static final int ONE_KB
The number of bytes in a kilobyte.

See Also:
Constant Field Values

ONE_MB

public static final int ONE_MB
The number of bytes in a megabyte.

See Also:
Constant Field Values

ONE_GB

public static final int ONE_GB
The number of bytes in a gigabyte.

See Also:
Constant Field Values

FS

public static String FS
Constructor Detail

FileUtils

public FileUtils()
Method Detail

getDefaultExcludes

public static String[] getDefaultExcludes()

getDefaultExcludesAsList

public static List getDefaultExcludesAsList()

byteCountToDisplaySize

public static String byteCountToDisplaySize(int size)
Returns a human-readable version of the file size (original is in bytes).

Parameters:
size - The number of bytes.
Returns:
A human-readable display value (includes units).

dirname

public static String dirname(String filename)
Returns the directory path portion of a file specification string. Matches the equally named unix command.

Returns:
The directory portion excluding the ending file separator.

filename

public static String filename(String filename)
Returns the filename portion of a file specification string.

Returns:
The filename string with extension.

basename

public static String basename(String filename)
Returns the filename portion of a file specification string. Matches the equally named unix command.

Returns:
The filename string without extension.

basename

public static String basename(String filename,
                              String suffix)
Returns the filename portion of a file specification string. Matches the equally named unix command.


extension

public static String extension(String filename)
Returns the extension portion of a file specification string. This everything after the last dot '.' in the filename (NOT including the dot).


fileExists

public static boolean fileExists(String fileName)
Check if a file exits.

Parameters:
fileName - The name of the file to check.
Returns:
true if file exists.

fileRead

public static String fileRead(String file)
                       throws IOException
Throws:
IOException

fileRead

public static String fileRead(File file)
                       throws IOException
Throws:
IOException

fileRead

public static String fileRead(File file,
                              String encoding)
                       throws IOException
Throws:
IOException

fileAppend

public static void fileAppend(String fileName,
                              String data)
                       throws IOException
Appends data to a file. The file will be created if it does not exist.

Parameters:
fileName - The name of the file to write.
data - The content to write to the file.
Throws:
IOException

fileWrite

public static void fileWrite(String fileName,
                             String data)
                      throws IOException
Writes data to a file. The file will be created if it does not exist.

Parameters:
fileName - The name of the file to write.
data - The content to write to the file.
Throws:
IOException

fileWrite

public static void fileWrite(String fileName,
                             String encoding,
                             String data)
                      throws IOException
Writes data to a file. The file will be created if it does not exist.

Parameters:
fileName - The name of the file to write.
encoding - The encoding of the file.
data - The content to write to the file.
Throws:
IOException

fileDelete

public static void fileDelete(String fileName)
Deletes a file.

Parameters:
fileName - The name of the file to delete.

waitFor

public static boolean waitFor(String fileName,
                              int seconds)
Waits for NFS to propagate a file creation, imposing a timeout.

Parameters:
fileName - The name of the file.
seconds - The maximum time in seconds to wait.
Returns:
True if file exists.

waitFor

public static boolean waitFor(File file,
                              int seconds)

getFile

public static File getFile(String fileName)
Creates a file handle.

Parameters:
fileName - The name of the file.
Returns:
A File manager.

getFilesFromExtension

public static String[] getFilesFromExtension(String directory,
                                             String[] extensions)
Given a directory and an array of extensions return an array of compliant files.

TODO Should an ignore list be passed in? TODO Should a recurse flag be passed in?

The given extensions should be like "java" and not like ".java"


mkdir

public static void mkdir(String dir)
Simple way to make a directory


contentEquals

public static boolean contentEquals(File file1,
                                    File file2)
                             throws IOException
Compare the contents of two files to determine if they are equal or not.

Parameters:
file1 - the first file
file2 - the second file
Returns:
true if the content of the files are equal or they both don't exist, false otherwise
Throws:
IOException

toFile

public static File toFile(URL url)
Convert from a URL to a File.

Parameters:
url - File URL.
Returns:
The equivalent File object, or null if the URL's protocol is not file

toURLs

public static URL[] toURLs(File[] files)
                    throws IOException
Convert the array of Files into a list of URLs.

Parameters:
files - the array of files
Returns:
the array of URLs
Throws:
IOException - if an error occurs

removeExtension

public static String removeExtension(String filename)
Remove extension from filename. ie
 foo.txt    --> foo
 a\b\c.jpg --> a\b\c
 a\b\c     --> a\b\c
 

Parameters:
filename - the filename
Returns:
the filename minus extension

getExtension

public static String getExtension(String filename)
Get extension from filename. ie
 foo.txt    --> "txt"
 a\b\c.jpg --> "jpg"
 a\b\c     --> ""
 

Parameters:
filename - the filename
Returns:
the extension of filename or "" if none

removePath

public static String removePath(String filepath)
Remove path from filename. Equivalent to the unix command basename ie.
 a/b/c.txt --> c.txt
 a.txt     --> a.txt
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

removePath

public static String removePath(String filepath,
                                char fileSeparatorChar)
Remove path from filename. ie.
 a/b/c.txt --> c.txt
 a.txt     --> a.txt
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

getPath

public static String getPath(String filepath)
Get path from filename. Roughly equivalent to the unix command dirname. ie.
 a/b/c.txt --> a/b
 a.txt     --> ""
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

getPath

public static String getPath(String filepath,
                             char fileSeparatorChar)
Get path from filename. ie.
 a/b/c.txt --> a/b
 a.txt     --> ""
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

copyFileToDirectory

public static void copyFileToDirectory(String source,
                                       String destinationDirectory)
                                throws IOException
Copy file from source to destination. If destinationDirectory does not exist, it (and any parent directories) will be created. If a file source in destinationDirectory exists, it will be overwritten.

Parameters:
source - An existing File to copy.
destinationDirectory - A directory to copy source into.
Throws:
FileNotFoundException - if source isn't a normal file.
IllegalArgumentException - if destinationDirectory isn't a directory.
IOException - if source does not exist, the file in destinationDirectory cannot be written to, or an IO error occurs during copying.

copyFileToDirectoryIfModified

public static void copyFileToDirectoryIfModified(String source,
                                                 String destinationDirectory)
                                          throws IOException
Copy file from source to destination only if source is newer than the target file. If destinationDirectory does not exist, it (and any parent directories) will be created. If a file source in destinationDirectory exists, it will be overwritten.

Parameters:
source - An existing File to copy.
destinationDirectory - A directory to copy source into.
Throws:
FileNotFoundException - if source isn't a normal file.
IllegalArgumentException - if destinationDirectory isn't a directory.
IOException - if source does not exist, the file in destinationDirectory cannot be written to, or an IO error occurs during copying.

copyFileToDirectory

public static void copyFileToDirectory(File source,
                                       File destinationDirectory)
                                throws IOException
Copy file from source to destination. If destinationDirectory does not exist, it (and any parent directories) will be created. If a file source in destinationDirectory exists, it will be overwritten.

Parameters:
source - An existing File to copy.
destinationDirectory - A directory to copy source into.
Throws:
FileNotFoundException - if source isn't a normal file.
IllegalArgumentException - if destinationDirectory isn't a directory.
IOException - if source does not exist, the file in destinationDirectory cannot be written to, or an IO error occurs during copying.

copyFileToDirectoryIfModified

public static void copyFileToDirectoryIfModified(File source,
                                                 File destinationDirectory)
                                          throws IOException
Copy file from source to destination only if source is newer than the target file. If destinationDirectory does not exist, it (and any parent directories) will be created. If a file source in destinationDirectory exists, it will be overwritten.

Parameters:
source - An existing File to copy.
destinationDirectory - A directory to copy source into.
Throws:
FileNotFoundException - if source isn't a normal file.
IllegalArgumentException - if destinationDirectory isn't a directory.
IOException - if source does not exist, the file in destinationDirectory cannot be written to, or an IO error occurs during copying.

copyFile

public static void copyFile(File source,
                            File destination)
                     throws IOException
Copy file from source to destination. The directories up to destination will be created if they don't already exist. destination will be overwritten if it already exists.

Parameters:
source - An existing non-directory File to copy bytes from.
destination - A non-directory File to write bytes to (possibly overwriting).
Throws:
IOException - if source does not exist, destination cannot be written to, or an IO error occurs during copying.
FileNotFoundException - if destination is a directory (use copyFileToDirectory(java.lang.String, java.lang.String)).

copyFileIfModified

public static boolean copyFileIfModified(File source,
                                         File destination)
                                  throws IOException
Copy file from source to destination only if source timestamp is later than the destination timestamp. The directories up to destination will be created if they don't already exist. destination will be overwritten if it already exists.

Parameters:
source - An existing non-directory File to copy bytes from.
destination - A non-directory File to write bytes to (possibly overwriting).
Throws:
IOException - if source does not exist, destination cannot be written to, or an IO error occurs during copying.
FileNotFoundException - if destination is a directory (use copyFileToDirectory(java.lang.String, java.lang.String)).

copyURLToFile

public static void copyURLToFile(URL source,
                                 File destination)
                          throws IOException
Copies bytes from the URL source to a file destination. The directories up to destination will be created if they don't already exist. destination will be overwritten if it already exists.

Parameters:
source - A URL to copy bytes from.
destination - A non-directory File to write bytes to (possibly overwriting).
Throws:
IOException - if
  • source URL cannot be opened
  • destination cannot be written to
  • an IO error occurs during copying

normalize

public static String normalize(String path)
Normalize a path. Eliminates "/../" and "/./" in a string. Returns null if the ..'s went past the root. Eg:
 /foo//               -->     /foo/
 /foo/./              -->     /foo/
 /foo/../bar          -->     /bar
 /foo/../bar/         -->     /bar/
 /foo/../bar/../baz   -->     /baz
 //foo//./bar         -->     /foo/bar
 /../                 -->     null
 

Parameters:
path - the path to normalize
Returns:
the normalized String, or null if too many ..'s.

catPath

public static String catPath(String lookupPath,
                             String path)
Will concatenate 2 paths. Paths with .. will be properly handled.

Eg.,
/a/b/c + d = /a/b/d
/a/b/c + ../d = /a/d

Thieved from Tomcat sources...

Returns:
The concatenated paths, or null if error occurs

resolveFile

public static File resolveFile(File baseFile,
                               String filename)
Resolve a file filename to it's canonical form. If filename is relative (doesn't start with /), it will be resolved relative to baseFile, otherwise it is treated as a normal root-relative path.

Parameters:
baseFile - Where to resolve filename from, if filename is relative.
filename - Absolute or relative file path to resolve.
Returns:
The canonical File of filename.

forceDelete

public static void forceDelete(String file)
                        throws IOException
Delete a file. If file is directory delete it and all sub-directories.

Throws:
IOException

forceDelete

public static void forceDelete(File file)
                        throws IOException
Delete a file. If file is directory delete it and all sub-directories.

Throws:
IOException

forceDeleteOnExit

public static void forceDeleteOnExit(File file)
                              throws IOException
Schedule a file to be deleted when JVM exits. If file is directory delete it and all sub-directories.

Throws:
IOException

forceMkdir

public static void forceMkdir(File file)
                       throws IOException
Make a directory. If there already exists a file with specified name or the directory is unable to be created then an exception is thrown.

Throws:
IOException

deleteDirectory

public static void deleteDirectory(String directory)
                            throws IOException
Recursively delete a directory.

Throws:
IOException

deleteDirectory

public static void deleteDirectory(File directory)
                            throws IOException
Recursively delete a directory.

Throws:
IOException

cleanDirectory

public static void cleanDirectory(String directory)
                           throws IOException
Clean a directory without deleting it.

Throws:
IOException

cleanDirectory

public static void cleanDirectory(File directory)
                           throws IOException
Clean a directory without deleting it.

Throws:
IOException

sizeOfDirectory

public static long sizeOfDirectory(String directory)
Recursively count size of a directory.

Returns:
size of directory in bytes.

sizeOfDirectory

public static long sizeOfDirectory(File directory)
Recursively count size of a directory.

Returns:
size of directory in bytes.

getFiles

public static List getFiles(File directory,
                            String includes,
                            String excludes)
                     throws IOException
Return the files contained in the directory, using inclusion and exclusion Ant patterns, including the directory name in each of the files

Parameters:
directory - the directory to scan
includes - the includes pattern, comma separated
excludes - the excludes pattern, comma separated
Returns:
a list of File objects
Throws:
IOException

getFiles

public static List getFiles(File directory,
                            String includes,
                            String excludes,
                            boolean includeBasedir)
                     throws IOException
Return the files contained in the directory, using inclusion and exclusion Ant patterns

Parameters:
directory - the directory to scan
includes - the includes pattern, comma separated
excludes - the excludes pattern, comma separated
includeBasedir - true to include the base dir in each file
Returns:
a list of File objects
Throws:
IOException

getFileNames

public static List getFileNames(File directory,
                                String includes,
                                String excludes,
                                boolean includeBasedir)
                         throws IOException
Return a list of files as String depending options. This method use case sensitive file name.

Parameters:
directory - the directory to scan
includes - the includes pattern, comma separated
excludes - the excludes pattern, comma separated
includeBasedir - true to include the base dir in each String of file
Returns:
a list of files as String
Throws:
IOException

getFileNames

public static List getFileNames(File directory,
                                String includes,
                                String excludes,
                                boolean includeBasedir,
                                boolean isCaseSensitive)
                         throws IOException
Return a list of files as String depending options.

Parameters:
directory - the directory to scan
includes - the includes pattern, comma separated
excludes - the excludes pattern, comma separated
includeBasedir - true to include the base dir in each String of file
isCaseSensitive - true if case sensitive
Returns:
a list of files as String
Throws:
IOException

getDirectoryNames

public static List getDirectoryNames(File directory,
                                     String includes,
                                     String excludes,
                                     boolean includeBasedir)
                              throws IOException
Return a list of directories as String depending options. This method use case sensitive file name.

Parameters:
directory - the directory to scan
includes - the includes pattern, comma separated
excludes - the excludes pattern, comma separated
includeBasedir - true to include the base dir in each String of file
Returns:
a list of directories as String
Throws:
IOException

getDirectoryNames

public static List getDirectoryNames(File directory,
                                     String includes,
                                     String excludes,
                                     boolean includeBasedir,
                                     boolean isCaseSensitive)
                              throws IOException
Return a list of directories as String depending options.

Parameters:
directory - the directory to scan
includes - the includes pattern, comma separated
excludes - the excludes pattern, comma separated
includeBasedir - true to include the base dir in each String of file
isCaseSensitive - true if case sensitive
Returns:
a list of directories as String
Throws:
IOException

getFileAndDirectoryNames

public static List getFileAndDirectoryNames(File directory,
                                            String includes,
                                            String excludes,
                                            boolean includeBasedir,
                                            boolean isCaseSensitive,
                                            boolean getFiles,
                                            boolean getDirectories)
                                     throws IOException
Return a list of files as String depending options.

Parameters:
directory - the directory to scan
includes - the includes pattern, comma separated
excludes - the excludes pattern, comma separated
includeBasedir - true to include the base dir in each String of file
isCaseSensitive - true if case sensitive
getFiles - true if get files
getDirectories - true if get directories
Returns:
a list of files as String
Throws:
IOException

copyDirectory

public static void copyDirectory(File sourceDirectory,
                                 File destinationDirectory)
                          throws IOException
Throws:
IOException

copyDirectory

public static void copyDirectory(File sourceDirectory,
                                 File destinationDirectory,
                                 String includes,
                                 String excludes)
                          throws IOException
Throws:
IOException

copyDirectoryStructure

public static void copyDirectoryStructure(File sourceDirectory,
                                          File destinationDirectory)
                                   throws IOException
Copies a entire directory structure.

Note:

Parameters:
sourceDirectory -
destinationDirectory -
Throws:
IOException

copyDirectoryStructureIfModified

public static void copyDirectoryStructureIfModified(File sourceDirectory,
                                                    File destinationDirectory)
                                             throws IOException
Copies an entire directory structure but only source files with timestamp later than the destinations'.

Note:

Parameters:
sourceDirectory -
destinationDirectory -
Throws:
IOException

rename

public static void rename(File from,
                          File to)
                   throws IOException
Renames a file, even if that involves crossing file system boundaries.

This will remove to (if it exists), ensure that to's parent directory exists and move from, which involves deleting from as well.

Parameters:
from - the file to move
to - the new file name
Throws:
IOException - if anything bad happens during this process. Note that to may have been deleted already when this happens.

createTempFile

public static File createTempFile(String prefix,
                                  String suffix,
                                  File parentDir)
Create a temporary file in a given directory.

The file denoted by the returned abstract pathname did not exist before this method was invoked, any subsequent invocation of this method will yield a different file name.

The filename is prefixNNNNNsuffix where NNNN is a random number

This method is different to File.createTempFile of JDK 1.2 as it doesn't create the file itself. It uses the location pointed to by java.io.tmpdir when the parentDir attribute is null.

Parameters:
prefix - prefix before the random number
suffix - file extension; include the '.'
parentDir - Directory to create the temporary file in - java.io.tmpdir used if not specificed
Returns:
a File reference to the new temporary file.

copyFile

public static void copyFile(File from,
                            File to,
                            String encoding,
                            FileUtils.FilterWrapper[] wrappers)
                     throws IOException
Throws:
IOException

loadFile

public static List loadFile(File file)
                     throws IOException
Throws:
IOException


Copyright © 2002-2011 The Apache Software Foundation. All Rights Reserved.