Class FileUtils
- java.lang.Object
-
- org.codehaus.plexus.util.BaseFileUtils
-
- org.codehaus.plexus.util.FileUtils
-
public class FileUtils extends BaseFileUtils
This class provides basic facilities for manipulating files and file paths.
Path-related methodsMethods exist to retrieve the components of a typical file path. For example
/www/hosted/mysite/index.html
, can be broken into:/www/hosted/mysite/
-- retrievable throughgetPath(java.lang.String)
index.html
-- retrievable throughremovePath(java.lang.String)
/www/hosted/mysite/index
-- retrievable throughremoveExtension(java.lang.String)
html
-- retrievable throughgetExtension(java.lang.String)
There are also methods to
File-related methodsconcatenate two paths
,resolve a path relative to a File
andnormalize(java.lang.String)
a path.There are methods to create a
File from a URL
, copy aFile to a directory
, copy aFile to another File
, copy aURL's contents to a File
, as well as methods todelete
andclean
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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FileUtils.FilterWrapper
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
FS
The vm file separatorprivate static java.lang.String[]
INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
Non-valid Characters for naming files, folders under Windows:":", "*", "?", "\"", "<", ">", "|"
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
Constructors Constructor Description FileUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static java.lang.String
basename(java.lang.String filename)
Returns the filename portion of a file specification string.static java.lang.String
basename(java.lang.String filename, java.lang.String suffix)
Returns the filename portion of a file specification string.private static java.util.List<java.lang.String>
blendFilesToVector(java.util.List<java.lang.String> v, java.lang.String[] files)
Private helper method for getFilesFromExtension()static java.lang.String
byteCountToDisplaySize(int size)
Returns a human-readable version of the file size (original is in bytes).static java.lang.String
catPath(java.lang.String lookupPath, java.lang.String path)
Will concatenate 2 paths.private static void
checkCanWrite(java.io.File destination)
static void
cleanDirectory(java.io.File directory)
Clean a directory without deleting it.static void
cleanDirectory(java.lang.String directory)
Clean a directory without deleting it.private static void
cleanDirectoryOnExit(java.io.File directory)
Clean a directory without deleting it.static boolean
contentEquals(java.io.File file1, java.io.File file2)
Compare the contents of two files to determine if they are equal or not.static void
copyDirectory(java.io.File sourceDirectory, java.io.File destinationDirectory)
Copy a directory to an other one.static void
copyDirectory(java.io.File sourceDirectory, java.io.File destinationDirectory, java.lang.String includes, java.lang.String excludes)
Copy a directory to an other one.static void
copyDirectoryLayout(java.io.File sourceDirectory, java.io.File destinationDirectory, java.lang.String[] includes, java.lang.String[] excludes)
Copies a entire directory layout : no files will be copied only directoriesstatic void
copyDirectoryStructure(java.io.File sourceDirectory, java.io.File destinationDirectory)
Copies a entire directory structure.private static void
copyDirectoryStructure(java.io.File sourceDirectory, java.io.File destinationDirectory, java.io.File rootDestinationDirectory, boolean onlyModifiedFiles)
static void
copyDirectoryStructureIfModified(java.io.File sourceDirectory, java.io.File destinationDirectory)
Copies an entire directory structure but only source files with timestamp later than the destinations'.static void
copyFile(java.io.File source, java.io.File destination)
Copy file from source to destination.static void
copyFile(java.io.File from, java.io.File to, java.lang.String encoding, FileUtils.FilterWrapper[] wrappers)
If wrappers is null or empty, the file will be copy only ifto.lastModified() < from.lastModified()
static void
copyFile(java.io.File from, java.io.File to, java.lang.String encoding, FileUtils.FilterWrapper[] wrappers, boolean overwrite)
If wrappers is null or empty, the file will be copy only ifto.lastModified() < from.lastModified()
, if overwrite is truestatic boolean
copyFileIfModified(java.io.File source, java.io.File destination)
Copy file from source to destination only if source timestamp is later than the destination timestamp.static void
copyFileToDirectory(java.io.File source, java.io.File destinationDirectory)
Copy file from source to destination.static void
copyFileToDirectory(java.lang.String source, java.lang.String destinationDirectory)
Copy file from source to destination.static void
copyFileToDirectoryIfModified(java.io.File source, java.io.File destinationDirectory)
Copy file from source to destination only if source is newer than the target file.static void
copyFileToDirectoryIfModified(java.lang.String source, java.lang.String destinationDirectory)
Copy file from source to destination only if source is newer than the target file.static void
copyStreamToFile(InputStreamFacade source, java.io.File destination)
Copies bytes from theInputStream
source
to a filedestination
.static void
copyURLToFile(java.net.URL source, java.io.File destination)
Copies bytes from the URLsource
to a filedestination
.static java.io.File
createTempFile(java.lang.String prefix, java.lang.String suffix, java.io.File parentDir)
Create a temporary file in a given directory.static void
deleteDirectory(java.io.File directory)
Recursively delete a directory.static void
deleteDirectory(java.lang.String directory)
Recursively delete a directory.private static void
deleteDirectoryOnExit(java.io.File directory)
Recursively schedule directory for deletion on JVM exit.private static boolean
deleteFile(java.io.File file)
Accommodate Windows bug encountered in both Sun and IBM JDKs.static java.lang.String
dirname(java.lang.String filename)
Returns the directory path portion of a file specification string.private static void
doCopyFile(java.io.File source, java.io.File destination)
private static void
doCopyFileUsingNewIO(java.io.File source, java.io.File destination)
static java.lang.String
extension(java.lang.String filename)
Returns the extension portion of a file specification string.static void
fileAppend(java.lang.String fileName, java.lang.String data)
Deprecated.usejava.nio.files.Files.write(filename, data.getBytes(encoding), StandardOpenOption.APPEND, StandardOpenOption.CREATE)
static void
fileAppend(java.lang.String fileName, java.lang.String encoding, java.lang.String data)
Deprecated.usejava.nio.files.Files.write(filename, data.getBytes(encoding), StandardOpenOption.APPEND, StandardOpenOption.CREATE)
private static void
fileAppend(java.nio.file.Path path, java.lang.String encoding, java.lang.String data)
static void
fileDelete(java.lang.String fileName)
Deletes a file.static boolean
fileExists(java.lang.String fileName)
Check if a file exits.static java.lang.String
filename(java.lang.String filename)
Returns the filename portion of a file specification string.static java.lang.String
fileRead(java.io.File file)
Note: the file content is read with platform encodingstatic java.lang.String
fileRead(java.io.File file, java.lang.String encoding)
static java.lang.String
fileRead(java.lang.String file)
Note: the file content is read with platform encoding.static java.lang.String
fileRead(java.lang.String file, java.lang.String encoding)
static void
fileWrite(java.io.File file, java.lang.String data)
Writes data to a file.static void
fileWrite(java.io.File file, java.lang.String encoding, java.lang.String data)
Writes data to a file.static void
fileWrite(java.lang.String fileName, java.lang.String data)
Writes data to a file.static void
fileWrite(java.lang.String fileName, java.lang.String encoding, java.lang.String data)
Writes data to a file.static void
forceDelete(java.io.File file)
Delete a file.static void
forceDelete(java.lang.String file)
Delete a file.static void
forceDeleteOnExit(java.io.File file)
Schedule a file to be deleted when JVM exits.static void
forceMkdir(java.io.File file)
Make a directory.static java.lang.String[]
getDefaultExcludes()
static java.util.List<java.lang.String>
getDefaultExcludesAsList()
static java.lang.String
getDefaultExcludesAsString()
static java.util.List<java.lang.String>
getDirectoryNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir)
Return a list of directories as String depending options.static java.util.List<java.lang.String>
getDirectoryNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir, boolean isCaseSensitive)
Return a list of directories as String depending options.static java.lang.String
getExtension(java.lang.String filename)
Get extension from filename.static java.io.File
getFile(java.lang.String fileName)
Creates a file handle.static java.util.List<java.lang.String>
getFileAndDirectoryNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir, boolean isCaseSensitive, boolean getFiles, boolean getDirectories)
Return a list of files as String depending options.static java.util.List<java.lang.String>
getFileNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir)
Return a list of files as String depending options.static java.util.List<java.lang.String>
getFileNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir, boolean isCaseSensitive)
Return a list of files as String depending options.static java.util.List<java.io.File>
getFiles(java.io.File directory, java.lang.String includes, java.lang.String excludes)
Return the files contained in the directory, using inclusion and exclusion Ant patterns, including the directory name in each of the filesstatic java.util.List<java.io.File>
getFiles(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir)
Return the files contained in the directory, using inclusion and exclusion Ant patternsstatic java.lang.String[]
getFilesFromExtension(java.lang.String directory, java.lang.String[] extensions)
Given a directory and an array of extensions return an array of compliant files.static java.lang.String
getPath(java.lang.String filepath)
Get path from filename.static java.lang.String
getPath(java.lang.String filepath, char fileSeparatorChar)
Get path from filename.private static boolean
isSourceNewerThanDestination(java.io.File source, java.io.File destination)
private static boolean
isValidFile(java.lang.String file, java.lang.String[] extensions)
Checks to see if a file is of a particular type(s).static boolean
isValidWindowsFileName(java.io.File f)
For Windows OS, check if the file name contains any of the following characters:":", "*", "?", "\"", "<", ">", "|"
static void
linkFile(java.io.File source, java.io.File destination)
Link file from destination to source.static java.util.List<java.lang.String>
loadFile(java.io.File file)
Note: the file content is read with platform encodingstatic void
mkdir(java.lang.String dir)
Simple way to make a directorystatic void
mkDirs(java.io.File sourceBase, java.lang.String[] dirs, java.io.File destination)
Creates a number of directories, as delivered from DirectoryScannerprivate static void
mkdirsFor(java.io.File destination)
static java.lang.String
normalize(java.lang.String path)
Normalize a path.static java.lang.String
removeExtension(java.lang.String filename)
Remove extension from filename.static java.lang.String
removePath(java.lang.String filepath)
Remove path from filename.static java.lang.String
removePath(java.lang.String filepath, char fileSeparatorChar)
Remove path from filename.static void
rename(java.io.File from, java.io.File to)
Renames a file, even if that involves crossing file system boundaries.static java.io.File
resolveFile(java.io.File baseFile, java.lang.String filename)
Resolve a filefilename
to it's canonical form.static long
sizeOfDirectory(java.io.File directory)
Recursively count size of a directory.static long
sizeOfDirectory(java.lang.String directory)
Recursively count size of a directory.static java.io.File
toFile(java.net.URL url)
Convert from aURL
to aFile
.static java.net.URL[]
toURLs(java.io.File[] files)
Convert the array of Files into a list of URLs.static boolean
waitFor(java.io.File file, int seconds)
Waits for NFS to propagate a file creation, imposing a timeout.static boolean
waitFor(java.lang.String fileName, int seconds)
Waits for NFS to propagate a file creation, imposing a timeout.-
Methods inherited from class org.codehaus.plexus.util.BaseFileUtils
fileRead, fileWrite
-
-
-
-
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 java.lang.String FS
The vm file separator
-
INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
private static final java.lang.String[] INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
Non-valid Characters for naming files, folders under Windows:":", "*", "?", "\"", "<", ">", "|"
-
-
Method Detail
-
getDefaultExcludes
public static java.lang.String[] getDefaultExcludes()
- Returns:
- the default excludes pattern
- See Also:
AbstractScanner.DEFAULTEXCLUDES
-
getDefaultExcludesAsList
public static java.util.List<java.lang.String> getDefaultExcludesAsList()
- Returns:
- the default excludes pattern as list.
- See Also:
getDefaultExcludes()
-
getDefaultExcludesAsString
public static java.lang.String getDefaultExcludesAsString()
- Returns:
- the default excludes pattern as comma separated string.
- See Also:
AbstractScanner.DEFAULTEXCLUDES
,StringUtils.join(Object[], String)
-
byteCountToDisplaySize
public static java.lang.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 java.lang.String dirname(java.lang.String filename)
Returns the directory path portion of a file specification string. Matches the equally named unix command.- Parameters:
filename
- the file path- Returns:
- The directory portion excluding the ending file separator.
-
filename
public static java.lang.String filename(java.lang.String filename)
Returns the filename portion of a file specification string.- Parameters:
filename
- the file path- Returns:
- The filename string with extension.
-
basename
public static java.lang.String basename(java.lang.String filename)
Returns the filename portion of a file specification string. Matches the equally named unix command.- Parameters:
filename
- the file path- Returns:
- The filename string without extension.
-
basename
public static java.lang.String basename(java.lang.String filename, java.lang.String suffix)
Returns the filename portion of a file specification string. Matches the equally named unix command.- Parameters:
filename
- the file pathsuffix
- the file suffix- Returns:
- the basename of the file
-
extension
public static java.lang.String extension(java.lang.String filename)
Returns the extension portion of a file specification string. This everything after the last dot '.' in the filename (NOT including the dot).- Parameters:
filename
- the file path- Returns:
- the extension of the file
-
fileExists
public static boolean fileExists(java.lang.String fileName)
Check if a file exits.- Parameters:
fileName
- the file path.- Returns:
- true if file exists.
-
fileRead
public static java.lang.String fileRead(java.lang.String file) throws java.io.IOException
Note: the file content is read with platform encoding.- Parameters:
file
- the file path- Returns:
- the file content using the platform encoding.
- Throws:
java.io.IOException
- if any
-
fileRead
public static java.lang.String fileRead(java.lang.String file, java.lang.String encoding) throws java.io.IOException
- Parameters:
file
- the file pathencoding
- the wanted encoding- Returns:
- the file content using the specified encoding.
- Throws:
java.io.IOException
- if any
-
fileRead
public static java.lang.String fileRead(java.io.File file) throws java.io.IOException
Note: the file content is read with platform encoding- Parameters:
file
- the file path- Returns:
- the file content using the platform encoding.
- Throws:
java.io.IOException
- if any
-
fileRead
public static java.lang.String fileRead(java.io.File file, java.lang.String encoding) throws java.io.IOException
- Parameters:
file
- the file pathencoding
- the wanted encoding- Returns:
- the file content using the specified encoding.
- Throws:
java.io.IOException
- if any
-
fileAppend
public static void fileAppend(java.lang.String fileName, java.lang.String data) throws java.io.IOException
Deprecated.usejava.nio.files.Files.write(filename, data.getBytes(encoding), StandardOpenOption.APPEND, StandardOpenOption.CREATE)
Appends data to a file. The file will be created if it does not exist. Note: the data is written with platform encoding- Parameters:
fileName
- The path of the file to write.data
- The content to write to the file.- Throws:
java.io.IOException
- if any
-
fileAppend
public static void fileAppend(java.lang.String fileName, java.lang.String encoding, java.lang.String data) throws java.io.IOException
Deprecated.usejava.nio.files.Files.write(filename, data.getBytes(encoding), StandardOpenOption.APPEND, StandardOpenOption.CREATE)
Appends data to a file. The file will be created if it does not exist.- Parameters:
fileName
- The path of the file to write.encoding
- The encoding of the file.data
- The content to write to the file.- Throws:
java.io.IOException
- if any
-
fileAppend
private static void fileAppend(java.nio.file.Path path, java.lang.String encoding, java.lang.String data) throws java.io.IOException
- Throws:
java.io.IOException
-
fileWrite
public static void fileWrite(java.lang.String fileName, java.lang.String data) throws java.io.IOException
Writes data to a file. The file will be created if it does not exist. Note: the data is written with platform encoding- Parameters:
fileName
- The path of the file to write.data
- The content to write to the file.- Throws:
java.io.IOException
- if any
-
fileWrite
public static void fileWrite(java.lang.String fileName, java.lang.String encoding, java.lang.String data) throws java.io.IOException
Writes data to a file. The file will be created if it does not exist.- Parameters:
fileName
- The path of the file to write.encoding
- The encoding of the file.data
- The content to write to the file.- Throws:
java.io.IOException
- if any
-
fileWrite
public static void fileWrite(java.io.File file, java.lang.String data) throws java.io.IOException
Writes data to a file. The file will be created if it does not exist. Note: the data is written with platform encoding- Parameters:
file
- The file to write.data
- The content to write to the file.- Throws:
java.io.IOException
- if any- Since:
- 2.0.6
-
fileWrite
public static void fileWrite(java.io.File file, java.lang.String encoding, java.lang.String data) throws java.io.IOException
Writes data to a file. The file will be created if it does not exist.- Parameters:
file
- The file to write.encoding
- The encoding of the file.data
- The content to write to the file.- Throws:
java.io.IOException
- if any- Since:
- 2.0.6
-
fileDelete
public static void fileDelete(java.lang.String fileName)
Deletes a file.- Parameters:
fileName
- The path of the file to delete.
-
waitFor
public static boolean waitFor(java.lang.String fileName, int seconds)
Waits for NFS to propagate a file creation, imposing a timeout.- Parameters:
fileName
- The path of the file.seconds
- The maximum time in seconds to wait.- Returns:
- True if file exists.
-
waitFor
public static boolean waitFor(java.io.File file, int seconds)
Waits for NFS to propagate a file creation, imposing a timeout.- Parameters:
file
- The file.seconds
- The maximum time in seconds to wait.- Returns:
- True if file exists.
-
getFile
public static java.io.File getFile(java.lang.String fileName)
Creates a file handle.- Parameters:
fileName
- The path of the file.- Returns:
- A
File
manager.
-
getFilesFromExtension
public static java.lang.String[] getFilesFromExtension(java.lang.String directory, java.lang.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"
- Parameters:
directory
- The path of the directory.extensions
- an array of expected extensions.- Returns:
- An array of files for the wanted extensions.
-
blendFilesToVector
private static java.util.List<java.lang.String> blendFilesToVector(java.util.List<java.lang.String> v, java.lang.String[] files)
Private helper method for getFilesFromExtension()
-
isValidFile
private static boolean isValidFile(java.lang.String file, java.lang.String[] extensions)
Checks to see if a file is of a particular type(s). Note that if the file does not have an extension, an empty string ("") is matched for.
-
mkdir
public static void mkdir(java.lang.String dir)
Simple way to make a directory- Parameters:
dir
- the directory to create- Throws:
java.lang.IllegalArgumentException
- if the dir contains illegal Windows characters under Windows OS.- See Also:
INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
-
contentEquals
public static boolean contentEquals(java.io.File file1, java.io.File file2) throws java.io.IOException
Compare the contents of two files to determine if they are equal or not.- 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:
java.io.IOException
- if any
-
toFile
public static java.io.File toFile(java.net.URL url)
Convert from aURL
to aFile
.- Parameters:
url
- File URL.- Returns:
- The equivalent
File
object, ornull
if the URL's protocol is notfile
-
toURLs
public static java.net.URL[] toURLs(java.io.File[] files) throws java.io.IOException
Convert the array of Files into a list of URLs.- Parameters:
files
- the array of files- Returns:
- the array of URLs
- Throws:
java.io.IOException
- if an error occurs
-
removeExtension
public static java.lang.String removeExtension(java.lang.String filename)
Remove extension from filename. iefoo.txt --> foo a\b\c.jpg --> a\b\c a\b\c --> a\b\c
- Parameters:
filename
- the path of the file- Returns:
- the filename minus extension
-
getExtension
public static java.lang.String getExtension(java.lang.String filename)
Get extension from filename. iefoo.txt --> "txt" a\b\c.jpg --> "jpg" a\b\c --> ""
- Parameters:
filename
- the path of the file- Returns:
- the extension of filename or "" if none
-
removePath
public static java.lang.String removePath(java.lang.String filepath)
Remove path from filename. Equivalent to the unix commandbasename
ie.a/b/c.txt --> c.txt a.txt --> a.txt
- Parameters:
filepath
- the path of the file- Returns:
- the filename minus path
-
removePath
public static java.lang.String removePath(java.lang.String filepath, char fileSeparatorChar)
Remove path from filename. ie.a/b/c.txt --> c.txt a.txt --> a.txt
- Parameters:
filepath
- the path of the filefileSeparatorChar
- the file separator character like / on Unix platforms.- Returns:
- the filename minus path
-
getPath
public static java.lang.String getPath(java.lang.String filepath)
Get path from filename. Roughly equivalent to the unix commanddirname
. ie.a/b/c.txt --> a/b a.txt --> ""
- Parameters:
filepath
- the filepath- Returns:
- the filename minus path
-
getPath
public static java.lang.String getPath(java.lang.String filepath, char fileSeparatorChar)
Get path from filename. ie.a/b/c.txt --> a/b a.txt --> ""
- Parameters:
filepath
- the filepathfileSeparatorChar
- the file separator character like / on Unix platforms.- Returns:
- the filename minus path
-
copyFileToDirectory
public static void copyFileToDirectory(java.lang.String source, java.lang.String destinationDirectory) throws java.io.IOException
Copy file from source to destination. IfdestinationDirectory
does not exist, it (and any parent directories) will be created. If a filesource
indestinationDirectory
exists, it will be overwritten.- Parameters:
source
- An existingFile
to copy.destinationDirectory
- A directory to copysource
into.- Throws:
java.io.FileNotFoundException
- ifsource
isn't a normal file.java.lang.IllegalArgumentException
- ifdestinationDirectory
isn't a directory.java.io.IOException
- ifsource
does not exist, the file indestinationDirectory
cannot be written to, or an IO error occurs during copying.
-
copyFileToDirectoryIfModified
public static void copyFileToDirectoryIfModified(java.lang.String source, java.lang.String destinationDirectory) throws java.io.IOException
Copy file from source to destination only if source is newer than the target file. IfdestinationDirectory
does not exist, it (and any parent directories) will be created. If a filesource
indestinationDirectory
exists, it will be overwritten.- Parameters:
source
- An existingFile
to copy.destinationDirectory
- A directory to copysource
into.- Throws:
java.io.FileNotFoundException
- ifsource
isn't a normal file.java.lang.IllegalArgumentException
- ifdestinationDirectory
isn't a directory.java.io.IOException
- ifsource
does not exist, the file indestinationDirectory
cannot be written to, or an IO error occurs during copying.
-
copyFileToDirectory
public static void copyFileToDirectory(java.io.File source, java.io.File destinationDirectory) throws java.io.IOException
Copy file from source to destination. IfdestinationDirectory
does not exist, it (and any parent directories) will be created. If a filesource
indestinationDirectory
exists, it will be overwritten.- Parameters:
source
- An existingFile
to copy.destinationDirectory
- A directory to copysource
into.- Throws:
java.io.FileNotFoundException
- ifsource
isn't a normal file.java.lang.IllegalArgumentException
- ifdestinationDirectory
isn't a directory.java.io.IOException
- ifsource
does not exist, the file indestinationDirectory
cannot be written to, or an IO error occurs during copying.
-
copyFileToDirectoryIfModified
public static void copyFileToDirectoryIfModified(java.io.File source, java.io.File destinationDirectory) throws java.io.IOException
Copy file from source to destination only if source is newer than the target file. IfdestinationDirectory
does not exist, it (and any parent directories) will be created. If a filesource
indestinationDirectory
exists, it will be overwritten.- Parameters:
source
- An existingFile
to copy.destinationDirectory
- A directory to copysource
into.- Throws:
java.io.FileNotFoundException
- ifsource
isn't a normal file.java.lang.IllegalArgumentException
- ifdestinationDirectory
isn't a directory.java.io.IOException
- ifsource
does not exist, the file indestinationDirectory
cannot be written to, or an IO error occurs during copying.
-
mkDirs
public static void mkDirs(java.io.File sourceBase, java.lang.String[] dirs, java.io.File destination) throws java.io.IOException
Creates a number of directories, as delivered from DirectoryScanner- Parameters:
sourceBase
- The basedir used for the directory scandirs
- The getIncludedDirs from the dirscannerdestination
- The base dir of the output structure- Throws:
java.io.IOException
- io issue
-
copyFile
public static void copyFile(java.io.File source, java.io.File destination) throws java.io.IOException
Copy file from source to destination. The directories up todestination
will be created if they don't already exist.destination
will be overwritten if it already exists.- Parameters:
source
- An existing non-directoryFile
to copy bytes from.destination
- A non-directoryFile
to write bytes to (possibly overwriting).- Throws:
java.io.IOException
- ifsource
does not exist,destination
cannot be written to, or an IO error occurs during copying.java.io.FileNotFoundException
- ifdestination
is a directory (usecopyFileToDirectory(java.lang.String, java.lang.String)
).
-
doCopyFile
private static void doCopyFile(java.io.File source, java.io.File destination) throws java.io.IOException
- Throws:
java.io.IOException
-
doCopyFileUsingNewIO
private static void doCopyFileUsingNewIO(java.io.File source, java.io.File destination) throws java.io.IOException
- Throws:
java.io.IOException
-
linkFile
public static void linkFile(java.io.File source, java.io.File destination) throws java.io.IOException
Link file from destination to source. The directories up todestination
will be created if they don't already exist.destination
will be overwritten if it already exists.- Parameters:
source
- An existing non-directoryFile
to link to.destination
- A non-directoryFile
becoming the link (possibly overwriting).- Throws:
java.io.IOException
- ifsource
does not exist,destination
cannot be created, or an IO error occurs during linking.java.io.FileNotFoundException
- ifdestination
is a directory (usecopyFileToDirectory(java.lang.String, java.lang.String)
).
-
copyFileIfModified
public static boolean copyFileIfModified(java.io.File source, java.io.File destination) throws java.io.IOException
Copy file from source to destination only if source timestamp is later than the destination timestamp. The directories up todestination
will be created if they don't already exist.destination
will be overwritten if it already exists.- Parameters:
source
- An existing non-directoryFile
to copy bytes from.destination
- A non-directoryFile
to write bytes to (possibly overwriting).- Returns:
- true if no problem occured
- Throws:
java.io.IOException
- ifsource
does not exist,destination
cannot be written to, or an IO error occurs during copying.
-
copyURLToFile
public static void copyURLToFile(java.net.URL source, java.io.File destination) throws java.io.IOException
Copies bytes from the URLsource
to a filedestination
. The directories up todestination
will be created if they don't already exist.destination
will be overwritten if it already exists.- Parameters:
source
- AURL
to copy bytes from.destination
- A non-directoryFile
to write bytes to (possibly overwriting).- Throws:
java.io.IOException
- ifsource
URL cannot be openeddestination
cannot be written to- an IO error occurs during copying
-
copyStreamToFile
public static void copyStreamToFile(InputStreamFacade source, java.io.File destination) throws java.io.IOException
Copies bytes from theInputStream
source
to a filedestination
. The directories up todestination
will be created if they don't already exist.destination
will be overwritten if it already exists.- Parameters:
source
- AnInputStream
to copy bytes from. This stream is guaranteed to be closed.destination
- A non-directoryFile
to write bytes to (possibly overwriting).- Throws:
java.io.IOException
- ifsource
URL cannot be openeddestination
cannot be written to- an IO error occurs during copying
-
checkCanWrite
private static void checkCanWrite(java.io.File destination) throws java.io.IOException
- Throws:
java.io.IOException
-
mkdirsFor
private static void mkdirsFor(java.io.File destination)
-
normalize
public static java.lang.String normalize(java.lang.String path)
Normalize a path. Eliminates "/../" and "/./" in a string. Returnsnull
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 java.lang.String catPath(java.lang.String lookupPath, java.lang.String path)
Will concatenate 2 paths. Paths with
Eg.,..
will be properly handled./a/b/c + d = /a/b/d /a/b/c + ../d = /a/d
Thieved from Tomcat sources...
- Parameters:
lookupPath
- a pathpath
- the path to concatenate- Returns:
- The concatenated paths, or null if error occurs
-
resolveFile
public static java.io.File resolveFile(java.io.File baseFile, java.lang.String filename)
Resolve a filefilename
to it's canonical form. Iffilename
is relative (doesn't start with/
), it will be resolved relative tobaseFile
, otherwise it is treated as a normal root-relative path.- Parameters:
baseFile
- Where to resolvefilename
from, iffilename
is relative.filename
- Absolute or relative file path to resolve.- Returns:
- The canonical
File
offilename
.
-
forceDelete
public static void forceDelete(java.lang.String file) throws java.io.IOException
Delete a file. If file is directory delete it and all sub-directories.- Parameters:
file
- the file path- Throws:
java.io.IOException
- if any
-
forceDelete
public static void forceDelete(java.io.File file) throws java.io.IOException
Delete a file. If file is directory delete it and all sub-directories.- Parameters:
file
- a file- Throws:
java.io.IOException
- if any
-
deleteFile
private static boolean deleteFile(java.io.File file) throws java.io.IOException
Accommodate Windows bug encountered in both Sun and IBM JDKs. Others possible. If the delete does not work, call System.gc(), wait a little and try again.- Parameters:
file
- a file- Throws:
java.io.IOException
- if any
-
forceDeleteOnExit
public static void forceDeleteOnExit(java.io.File file) throws java.io.IOException
Schedule a file to be deleted when JVM exits. If file is directory delete it and all sub-directories.- Parameters:
file
- a file- Throws:
java.io.IOException
- if any
-
deleteDirectoryOnExit
private static void deleteDirectoryOnExit(java.io.File directory) throws java.io.IOException
Recursively schedule directory for deletion on JVM exit.- Parameters:
directory
- a directory- Throws:
java.io.IOException
- if any
-
cleanDirectoryOnExit
private static void cleanDirectoryOnExit(java.io.File directory) throws java.io.IOException
Clean a directory without deleting it.- Parameters:
directory
- a directory- Throws:
java.io.IOException
- if any
-
forceMkdir
public static void forceMkdir(java.io.File file) throws java.io.IOException
Make a directory.- Parameters:
file
- not null- Throws:
java.io.IOException
- If there already exists a file with specified name or the directory is unable to be createdjava.lang.IllegalArgumentException
- if the file contains illegal Windows characters under Windows OS.- See Also:
INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
-
deleteDirectory
public static void deleteDirectory(java.lang.String directory) throws java.io.IOException
Recursively delete a directory.- Parameters:
directory
- a directory- Throws:
java.io.IOException
- if any
-
deleteDirectory
public static void deleteDirectory(java.io.File directory) throws java.io.IOException
Recursively delete a directory.- Parameters:
directory
- a directory- Throws:
java.io.IOException
- if any
-
cleanDirectory
public static void cleanDirectory(java.lang.String directory) throws java.io.IOException
Clean a directory without deleting it.- Parameters:
directory
- a directory- Throws:
java.io.IOException
- if any
-
cleanDirectory
public static void cleanDirectory(java.io.File directory) throws java.io.IOException
Clean a directory without deleting it.- Parameters:
directory
- a directory- Throws:
java.io.IOException
- if any
-
sizeOfDirectory
public static long sizeOfDirectory(java.lang.String directory)
Recursively count size of a directory.- Parameters:
directory
- a directory- Returns:
- size of directory in bytes.
-
sizeOfDirectory
public static long sizeOfDirectory(java.io.File directory)
Recursively count size of a directory.- Parameters:
directory
- a directory- Returns:
- size of directory in bytes.
-
getFiles
public static java.util.List<java.io.File> getFiles(java.io.File directory, java.lang.String includes, java.lang.String excludes) throws java.io.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 scanincludes
- the includes pattern, comma separatedexcludes
- the excludes pattern, comma separated- Returns:
- a list of File objects
- Throws:
java.io.IOException
- io issue- See Also:
getFileNames(File, String, String, boolean)
-
getFiles
public static java.util.List<java.io.File> getFiles(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir) throws java.io.IOException
Return the files contained in the directory, using inclusion and exclusion Ant patterns- Parameters:
directory
- the directory to scanincludes
- the includes pattern, comma separatedexcludes
- the excludes pattern, comma separatedincludeBasedir
- true to include the base dir in each file- Returns:
- a list of File objects
- Throws:
java.io.IOException
- io issue- See Also:
getFileNames(File, String, String, boolean)
-
getFileNames
public static java.util.List<java.lang.String> getFileNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir) throws java.io.IOException
Return a list of files as String depending options. This method use case sensitive file name.- Parameters:
directory
- the directory to scanincludes
- the includes pattern, comma separatedexcludes
- the excludes pattern, comma separatedincludeBasedir
- true to include the base dir in each String of file- Returns:
- a list of files as String
- Throws:
java.io.IOException
- io issue
-
getFileNames
public static java.util.List<java.lang.String> getFileNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir, boolean isCaseSensitive) throws java.io.IOException
Return a list of files as String depending options.- Parameters:
directory
- the directory to scanincludes
- the includes pattern, comma separatedexcludes
- the excludes pattern, comma separatedincludeBasedir
- true to include the base dir in each String of fileisCaseSensitive
- true if case sensitive- Returns:
- a list of files as String
- Throws:
java.io.IOException
- io issue
-
getDirectoryNames
public static java.util.List<java.lang.String> getDirectoryNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir) throws java.io.IOException
Return a list of directories as String depending options. This method use case sensitive file name.- Parameters:
directory
- the directory to scanincludes
- the includes pattern, comma separatedexcludes
- the excludes pattern, comma separatedincludeBasedir
- true to include the base dir in each String of file- Returns:
- a list of directories as String
- Throws:
java.io.IOException
- io issue
-
getDirectoryNames
public static java.util.List<java.lang.String> getDirectoryNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir, boolean isCaseSensitive) throws java.io.IOException
Return a list of directories as String depending options.- Parameters:
directory
- the directory to scanincludes
- the includes pattern, comma separatedexcludes
- the excludes pattern, comma separatedincludeBasedir
- true to include the base dir in each String of fileisCaseSensitive
- true if case sensitive- Returns:
- a list of directories as String
- Throws:
java.io.IOException
- io issue
-
getFileAndDirectoryNames
public static java.util.List<java.lang.String> getFileAndDirectoryNames(java.io.File directory, java.lang.String includes, java.lang.String excludes, boolean includeBasedir, boolean isCaseSensitive, boolean getFiles, boolean getDirectories) throws java.io.IOException
Return a list of files as String depending options.- Parameters:
directory
- the directory to scanincludes
- the includes pattern, comma separatedexcludes
- the excludes pattern, comma separatedincludeBasedir
- true to include the base dir in each String of fileisCaseSensitive
- true if case sensitivegetFiles
- true if get filesgetDirectories
- true if get directories- Returns:
- a list of files as String
- Throws:
java.io.IOException
- io issue
-
copyDirectory
public static void copyDirectory(java.io.File sourceDirectory, java.io.File destinationDirectory) throws java.io.IOException
Copy a directory to an other one.- Parameters:
sourceDirectory
- the source dirdestinationDirectory
- the target dir- Throws:
java.io.IOException
- if any
-
copyDirectory
public static void copyDirectory(java.io.File sourceDirectory, java.io.File destinationDirectory, java.lang.String includes, java.lang.String excludes) throws java.io.IOException
Copy a directory to an other one.- Parameters:
sourceDirectory
- the source dirdestinationDirectory
- the target dirincludes
- include patternexcludes
- exclude pattern- Throws:
java.io.IOException
- if any- See Also:
getFiles(File, String, String)
-
copyDirectoryLayout
public static void copyDirectoryLayout(java.io.File sourceDirectory, java.io.File destinationDirectory, java.lang.String[] includes, java.lang.String[] excludes) throws java.io.IOException
Copies a entire directory layout : no files will be copied only directories
Note:- It will include empty directories.
- The
sourceDirectory
must exists.
- Parameters:
sourceDirectory
- the source dirdestinationDirectory
- the target dirincludes
- include patternexcludes
- exclude pattern- Throws:
java.io.IOException
- if any- Since:
- 1.5.7
-
copyDirectoryStructure
public static void copyDirectoryStructure(java.io.File sourceDirectory, java.io.File destinationDirectory) throws java.io.IOException
Copies a entire directory structure.
Note:- It will include empty directories.
- The
sourceDirectory
must exists.
- Parameters:
sourceDirectory
- the source dirdestinationDirectory
- the target dir- Throws:
java.io.IOException
- if any
-
copyDirectoryStructureIfModified
public static void copyDirectoryStructureIfModified(java.io.File sourceDirectory, java.io.File destinationDirectory) throws java.io.IOException
Copies an entire directory structure but only source files with timestamp later than the destinations'.
Note:- It will include empty directories.
- The
sourceDirectory
must exists.
- Parameters:
sourceDirectory
- the source dirdestinationDirectory
- the target dir- Throws:
java.io.IOException
- if any
-
copyDirectoryStructure
private static void copyDirectoryStructure(java.io.File sourceDirectory, java.io.File destinationDirectory, java.io.File rootDestinationDirectory, boolean onlyModifiedFiles) throws java.io.IOException
- Throws:
java.io.IOException
-
rename
public static void rename(java.io.File from, java.io.File to) throws java.io.IOException
Renames a file, even if that involves crossing file system boundaries.
This will remove
to
(if it exists), ensure thatto
's parent directory exists and movefrom
, which involves deletingfrom
as well.- Parameters:
from
- the file to moveto
- the new file name- Throws:
java.io.IOException
- if anything bad happens during this process. Note thatto
may have been deleted already when this happens.
-
createTempFile
public static java.io.File createTempFile(java.lang.String prefix, java.lang.String suffix, java.io.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(String, String, File)
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.To delete automatically the file created by this method, use the
File.deleteOnExit()
method.- Parameters:
prefix
- prefix before the random numbersuffix
- 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(java.io.File from, java.io.File to, java.lang.String encoding, FileUtils.FilterWrapper[] wrappers) throws java.io.IOException
If wrappers is null or empty, the file will be copy only ifto.lastModified() < from.lastModified()
- Parameters:
from
- the file to copyto
- the destination fileencoding
- the file output encoding (only if wrappers is not empty)wrappers
- array ofFileUtils.FilterWrapper
- Throws:
java.io.IOException
- if an IO error occurs during copying or filtering
-
copyFile
public static void copyFile(java.io.File from, java.io.File to, java.lang.String encoding, FileUtils.FilterWrapper[] wrappers, boolean overwrite) throws java.io.IOException
If wrappers is null or empty, the file will be copy only ifto.lastModified() < from.lastModified()
, if overwrite is true- Parameters:
from
- the file to copyto
- the destination fileencoding
- the file output encoding (only if wrappers is not empty)wrappers
- array ofFileUtils.FilterWrapper
overwrite
- if true and wrappers is null or empty, the file will be copied even ifto.lastModified() < from.lastModified()
- Throws:
java.io.IOException
- if an IO error occurs during copying or filtering- Since:
- 1.5.2
-
isSourceNewerThanDestination
private static boolean isSourceNewerThanDestination(java.io.File source, java.io.File destination)
-
loadFile
public static java.util.List<java.lang.String> loadFile(java.io.File file) throws java.io.IOException
Note: the file content is read with platform encoding- Parameters:
file
- the file- Returns:
- a List containing every every line not starting with # and not empty
- Throws:
java.io.IOException
- if any
-
isValidWindowsFileName
public static boolean isValidWindowsFileName(java.io.File f)
For Windows OS, check if the file name contains any of the following characters:":", "*", "?", "\"", "<", ">", "|"
- Parameters:
f
- not null file- Returns:
false
if the file path contains any of forbidden Windows characters,true
if the Os is not Windows or if the file path respect the Windows constraints.- Since:
- 1.5.2
- See Also:
INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
-
-