org.apache.tools.ant.util
public class FileUtils extends Object
Field Summary | |
---|---|
static long | FAT_FILE_TIMESTAMP_GRANULARITY
The granularity of timestamps under FAT. |
static long | NTFS_FILE_TIMESTAMP_GRANULARITY
The granularity of timestamps under the NT File System.
|
static long | UNIX_FILE_TIMESTAMP_GRANULARITY
The granularity of timestamps under Unix. |
Constructor Summary | |
---|---|
protected | FileUtils()
Empty constructor. |
Method Summary | |
---|---|
static void | close(Writer device)
Close a Writer without throwing any exception if something went wrong.
|
static void | close(Reader device)
Close a Reader without throwing any exception if something went wrong.
|
static void | close(OutputStream device)
Close a stream without throwing any exception if something went wrong.
|
static void | close(InputStream device)
Close a stream without throwing any exception if something went wrong.
|
boolean | contentEquals(File f1, File f2)
Compares the contents of two files.
|
boolean | contentEquals(File f1, File f2, boolean textfile)
Compares the contents of two files.
|
void | copyFile(String sourceFile, String destFile)
Convenience method to copy a file from a source to a destination.
|
void | copyFile(String sourceFile, String destFile, FilterSetCollection filters)
Convenience method to copy a file from a source to a destination
specifying if token filtering must be used.
|
void | copyFile(String sourceFile, String destFile, FilterSetCollection filters, boolean overwrite)
Convenience method to copy a file from a source to a destination specifying if token
filtering must be used and if source files may overwrite newer destination files.
|
void | copyFile(String sourceFile, String destFile, FilterSetCollection filters, boolean overwrite, boolean preserveLastModified)
Convenience method to copy a file from a source to a destination
specifying if token
filtering must be used, if source files may overwrite newer destination
files and the last
modified time of destFile file should be made equal to
the last modified time
of sourceFile .
|
void | copyFile(String sourceFile, String destFile, FilterSetCollection filters, boolean overwrite, boolean preserveLastModified, String encoding)
Convenience method to copy a file from a source to a destination specifying if token
filtering must be used, if source files may overwrite newer destination files and the last
modified time of destFile file should be made equal to the last modified time
of sourceFile .
|
void | copyFile(String sourceFile, String destFile, FilterSetCollection filters, Vector filterChains, boolean overwrite, boolean preserveLastModified, String encoding, Project project)
Convenience method to copy a file from a source to a
destination specifying if token filtering must be used, if
filter chains must be used, if source files may overwrite
newer destination files and the last modified time of
destFile file should be made equal
to the last modified time of sourceFile .
|
void | copyFile(String sourceFile, String destFile, FilterSetCollection filters, Vector filterChains, boolean overwrite, boolean preserveLastModified, String inputEncoding, String outputEncoding, Project project)
Convenience method to copy a file from a source to a destination specifying if token
filtering must be used, if filter chains must be used, if source files may overwrite newer
destination files and the last modified time of destFile file should be made
equal to the last modified time of sourceFile .
|
void | copyFile(File sourceFile, File destFile)
Convenience method to copy a file from a source to a destination. |
void | copyFile(File sourceFile, File destFile, FilterSetCollection filters)
Convenience method to copy a file from a source to a destination
specifying if token filtering must be used.
|
void | copyFile(File sourceFile, File destFile, FilterSetCollection filters, boolean overwrite)
Convenience method to copy a file from a source to a
destination specifying if token filtering must be used and if
source files may overwrite newer destination files.
|
void | copyFile(File sourceFile, File destFile, FilterSetCollection filters, boolean overwrite, boolean preserveLastModified)
Convenience method to copy a file from a source to a
destination specifying if token filtering must be used, if
source files may overwrite newer destination files and the
last modified time of destFile file should be made equal
to the last modified time of sourceFile .
|
void | copyFile(File sourceFile, File destFile, FilterSetCollection filters, boolean overwrite, boolean preserveLastModified, String encoding)
Convenience method to copy a file from a source to a destination specifying if token
filtering must be used, if source files may overwrite newer destination files, the last
modified time of destFile file should be made equal to the last modified time
of sourceFile and which character encoding to assume.
|
void | copyFile(File sourceFile, File destFile, FilterSetCollection filters, Vector filterChains, boolean overwrite, boolean preserveLastModified, String encoding, Project project)
Convenience method to copy a file from a source to a
destination specifying if token filtering must be used, if
filter chains must be used, if source files may overwrite
newer destination files and the last modified time of
destFile file should be made equal
to the last modified time of sourceFile .
|
void | copyFile(File sourceFile, File destFile, FilterSetCollection filters, Vector filterChains, boolean overwrite, boolean preserveLastModified, String inputEncoding, String outputEncoding, Project project)
Convenience method to copy a file from a source to a
destination specifying if token filtering must be used, if
filter chains must be used, if source files may overwrite
newer destination files and the last modified time of
destFile file should be made equal
to the last modified time of sourceFile .
|
boolean | createNewFile(File f)
This was originally an emulation of File.createNewFile for JDK 1.1,
but it is now implemented using that method (Ant 1.6.3 onwards).
|
boolean | createNewFile(File f, boolean mkdirs)
Create a new file, optionally creating parent directories.
|
File | createTempFile(String prefix, String suffix, File parentDir)
Create a File object for a temporary file in a given directory. |
File | createTempFile(String prefix, String suffix, File parentDir, boolean deleteOnExit, boolean createFile)
Create a temporary file in a given directory.
|
File | createTempFile(String prefix, String suffix, File parentDir, boolean deleteOnExit)
Create a File object for a temporary file in a given directory. |
static void | delete(File file)
Delete the file with File#delete() if the argument is not null.
|
String[] | dissect(String path)
Dissect the specified absolute path. |
boolean | fileNameEquals(File f1, File f2)
Compares two filenames.
|
String | fromURI(String uri)
Constructs a file path from a file: URI.
|
String | getDefaultEncoding()
Get the default encoding.
|
long | getFileTimestampGranularity()
Get the granularity of file timestamps. |
URL | getFileURL(File file)
Get the URL for a file taking into account # characters.
|
static FileUtils | getFileUtils()
Method to retrieve The FileUtils, which is shared by all users of this
method. |
File | getParentFile(File f)
This was originally an emulation of File#getParentFile for JDK 1.1, but it is now
implemented using that method (Ant 1.6.3 onwards).
|
static String | getPath(List pathStack)
Gets path from a List of String s.
|
static String | getPath(List pathStack, char separatorChar)
Gets path from a List of String s.
|
static String[] | getPathStack(String path)
Gets all names of the path as an array of String s.
|
static String | getRelativePath(File fromFile, File toFile)
Calculates the relative path between two files.
|
boolean | hasErrorInCase(File localFile)
test whether a file or directory exists, with an error in the
upper/lower case spelling of the name.
|
static boolean | isAbsolutePath(String filename)
Verifies that the specified filename represents an absolute path.
|
static boolean | isContextRelativePath(String filename)
On DOS and NetWare, the evaluation of certain file
specifications is context-dependent. |
boolean | isLeadingPath(File leading, File path)
Learn whether one path "leads" another. |
boolean | isSymbolicLink(File parent, String name)
Checks whether a given file is a symbolic link.
|
boolean | isUpToDate(File source, File dest, long granularity)
Returns true if the source is older than the dest.
|
boolean | isUpToDate(File source, File dest)
Returns true if the source is older than the dest. |
boolean | isUpToDate(long sourceTime, long destTime, long granularity)
Compare two timestamps for being up to date using
the specified granularity.
|
boolean | isUpToDate(long sourceTime, long destTime)
Compare two timestamps for being up to date using the
current granularity.
|
static FileUtils | newFileUtils()
Factory method.
|
File | normalize(String path)
"Normalize" the given absolute path.
|
static String | readFully(Reader rdr)
Read from reader till EOF. |
static String | readFully(Reader rdr, int bufferSize)
Read from reader till EOF.
|
String | removeLeadingPath(File leading, File path)
Removes a leading path from a second path.
|
void | rename(File from, File to)
Renames a file, even if that involves crossing file system boundaries.
|
File | resolveFile(File file, String filename)
Interpret the filename as a file relative to the given file
unless the filename already represents an absolute filename.
|
static String | safeReadFully(Reader reader)
Safe read fully - do not return a null for an empty reader. |
void | setFileLastModified(File file, long time)
Calls File.setLastModified(long time). |
String | toURI(String path)
Constructs a file: URI that represents the
external form of the given pathname.
|
String | toVMSPath(File f)
Returns a VMS String representation of a File object.
|
static String | translatePath(String toProcess)
Translate a path into its native (platform specific) format.
|
Parameters: device output writer, can be null.
Parameters: device Reader, can be null.
Parameters: device stream, can be null.
Parameters: device stream, can be null.
Parameters: f1 the file whose content is to be compared. f2 the other file whose content is to be compared.
Returns: true if the content of the files is the same.
Throws: IOException if the files cannot be read.
Parameters: f1 the file whose content is to be compared. f2 the other file whose content is to be compared. textfile true if the file is to be treated as a text file and differences in kind of line break are to be ignored.
Returns: true if the content of the files is the same.
Throws: IOException if the files cannot be read.
Since: Ant 1.6.3
Parameters: sourceFile Name of file to copy from.
Must not be null
. destFile Name of file to copy to.
Must not be null
.
Throws: IOException if the copying fails.
Parameters: sourceFile Name of file to copy from.
Must not be null
. destFile Name of file to copy to.
Must not be null
. filters the collection of filters to apply to this copy.
Throws: IOException if the copying fails.
Parameters: sourceFile Name of file to copy from. Must not be null
. destFile Name of file to copy to. Must not be null
. filters the collection of filters to apply to this copy. overwrite Whether or not the destination file should be overwritten if it already
exists.
Throws: IOException if the copying fails.
destFile
file should be made equal to
the last modified time
of sourceFile
.
Parameters: sourceFile Name of file to copy from. Must not be null
. destFile Name of file to copy to. Must not be null
. filters the collection of filters to apply to this copy. overwrite Whether or not the destination file should be
overwritten if it already exists. preserveLastModified Whether or not the last modified time of
the resulting file
should be set to that of the source file.
Throws: IOException if the copying fails.
destFile
file should be made equal to the last modified time
of sourceFile
.
Parameters: sourceFile Name of file to copy from. Must not be null
. destFile Name of file to copy to. Must not be null
. filters the collection of filters to apply to this copy. overwrite Whether or not the destination file should be overwritten if it already
exists. preserveLastModified Whether or not the last modified time of the resulting file
should be set to that of the source file. encoding the encoding used to read and write the files.
Throws: IOException if the copying fails.
Since: Ant 1.5
destFile
file should be made equal
to the last modified time of sourceFile
.
Parameters: sourceFile Name of file to copy from.
Must not be null
. destFile Name of file to copy to.
Must not be null
. filters the collection of filters to apply to this copy. filterChains filterChains to apply during the copy. overwrite Whether or not the destination file should be
overwritten if it already exists. preserveLastModified Whether or not the last modified time of
the resulting file should be set to that
of the source file. encoding the encoding used to read and write the files. project the project instance.
Throws: IOException if the copying fails.
Since: Ant 1.5
destFile
file should be made
equal to the last modified time of sourceFile
.
Parameters: sourceFile Name of file to copy from. Must not be null
. destFile Name of file to copy to. Must not be null
. filters the collection of filters to apply to this copy. filterChains filterChains to apply during the copy. overwrite Whether or not the destination file should be overwritten if it already
exists. preserveLastModified Whether or not the last modified time of the resulting file
should be set to that of the source file. inputEncoding the encoding used to read the files. outputEncoding the encoding used to write the files. project the project instance.
Throws: IOException if the copying fails.
Since: Ant 1.6
Parameters: sourceFile the file to copy from. Must not be null
. destFile the file to copy to. Must not be null
.
Throws: IOException if the copying fails.
Parameters: sourceFile the file to copy from.
Must not be null
. destFile the file to copy to.
Must not be null
. filters the collection of filters to apply to this copy.
Throws: IOException if the copying fails.
Parameters: sourceFile the file to copy from.
Must not be null
. destFile the file to copy to.
Must not be null
. filters the collection of filters to apply to this copy. overwrite Whether or not the destination file should be
overwritten if it already exists.
Throws: IOException if the copying fails.
destFile
file should be made equal
to the last modified time of sourceFile
.
Parameters: sourceFile the file to copy from.
Must not be null
. destFile the file to copy to.
Must not be null
. filters the collection of filters to apply to this copy. overwrite Whether or not the destination file should be
overwritten if it already exists. preserveLastModified Whether or not the last modified time of
the resulting file should be set to that
of the source file.
Throws: IOException if the copying fails.
destFile
file should be made equal to the last modified time
of sourceFile
and which character encoding to assume.
Parameters: sourceFile the file to copy from. Must not be null
. destFile the file to copy to. Must not be null
. filters the collection of filters to apply to this copy. overwrite Whether or not the destination file should be overwritten if it already
exists. preserveLastModified Whether or not the last modified time of the resulting file
should be set to that of the source file. encoding the encoding used to read and write the files.
Throws: IOException if the copying fails.
Since: Ant 1.5
destFile
file should be made equal
to the last modified time of sourceFile
.
Parameters: sourceFile the file to copy from.
Must not be null
. destFile the file to copy to.
Must not be null
. filters the collection of filters to apply to this copy. filterChains filterChains to apply during the copy. overwrite Whether or not the destination file should be
overwritten if it already exists. preserveLastModified Whether or not the last modified time of
the resulting file should be set to that
of the source file. encoding the encoding used to read and write the files. project the project instance.
Throws: IOException if the copying fails.
Since: Ant 1.5
destFile
file should be made equal
to the last modified time of sourceFile
.
Parameters: sourceFile the file to copy from.
Must not be null
. destFile the file to copy to.
Must not be null
. filters the collection of filters to apply to this copy. filterChains filterChains to apply during the copy. overwrite Whether or not the destination file should be
overwritten if it already exists. preserveLastModified Whether or not the last modified time of
the resulting file should be set to that
of the source file. inputEncoding the encoding used to read the files. outputEncoding the encoding used to write the files. project the project instance.
Throws: IOException if the copying fails.
Since: Ant 1.6
This method has historically not guaranteed that the operation was atomic. In its current implementation it is.
Parameters: f the file to be created.
Returns: true if the file did not exist already.
Throws: IOException on error.
Since: Ant 1.5
Parameters: f the file to be created. mkdirs boolean
whether to create parent directories.
Returns: true if the file did not exist already.
Throws: IOException on error.
Since: Ant 1.6.3
Deprecated: since Ant 1.7.1
Create a File object for a temporary file in a given directory. Without actually creating the file.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.
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 specified.
Returns: a File reference to the new, nonexistent temporary file.
Since: Ant 1.7
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.
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 specified. deleteOnExit whether to set the tempfile for deletion on normal VM exit. createFile true if the file must actually be created. If false chances exist that a file with the same name is created in the time between invoking this method and the moment the file is actually created. If possible set to true.
Returns: a File reference to the new temporary file.
Since: Ant 1.7.1
Deprecated: since Ant 1.7.1
Create a File object for a temporary file in a given directory. Without actually creating the file.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.
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 specified. deleteOnExit whether to set the tempfile for deletion on normal VM exit.
Returns: a File reference to the new, nonexistent temporary file.
Since: Ant 1.7
Parameters: file file to delete.
Parameters: path the path to dissect.
Returns: String[] {root, remaining path}.
Throws: java.lang.NullPointerException if path is null.
Since: Ant 1.7
Unlike java.io.File#equals this method will try to compare the absolute paths and "normalize" the filenames before comparing them.
Parameters: f1 the file whose name is to be compared. f2 the other file whose name is to be compared.
Returns: true if the file are for the same file.
Since: Ant 1.5.3
file:
URI.
Will be an absolute path if the given URI is absolute.
Swallows '%' that are not followed by two characters, doesn't deal with non-ASCII characters.
Parameters: uri the URI designating a file in the local filesystem.
Returns: the local file system path for the file.
Since: Ant 1.6
Returns: the default file encoding.
Returns: the difference, in milliseconds, which two file timestamps must have in order for the two files to be considered to have different timestamps.
Parameters: file the file whose URL representation is required.
Returns: The FileURL value.
Throws: MalformedURLException if the URL representation cannot be formed.
Returns: an instance of FileUtils.
Since: Ant 1.6.3
Deprecated: since 1.7. Just use File#getParentFile directly.
This was originally an emulation of File#getParentFile for JDK 1.1, but it is now implemented using that method (Ant 1.6.3 onwards).Parameters: f the file whose parent is required.
Returns: the given file's parent, or null if the file does not have a parent.
Since: 1.10
List
of String
s.
Parameters: pathStack List
of String
s to be concatenated as a path.
Returns: String
, never null
Since: Ant 1.7
List
of String
s.
Parameters: pathStack List
of String
s to be concated as a path. separatorChar char
to be used as separator between names in path
Returns: String
, never null
Since: Ant 1.7
String
s.
Parameters: path to get names from
Returns: String
s, never null
Since: Ant 1.7
Implementation note:
This function may throw an IOException if an I/O error occurs
because its use of the canonical pathname may require filesystem queries.
Parameters: fromFile the File
to calculate the path from toFile the File
to calculate the path to
Returns: the relative path between the files
Throws: Exception for undocumented reasons
Since: Ant 1.7
See Also: File#getCanonicalPath()
Parameters: localFile file to test
Returns: true if the file exists and the case of the actual file is not the case of the parameter
Since: Ant 1.7.1
Parameters: filename the filename to be checked.
Returns: true if the filename represents an absolute path.
Throws: java.lang.NullPointerException if filename is null.
Since: Ant 1.6.3
Parameters: filename the filename to evaluate.
Returns: true if the filename is relative to system context.
Throws: java.lang.NullPointerException if filename is null.
Since: Ant 1.7
Parameters: leading The leading path, must not be null, must be absolute. path The path to remove from, must not be null, must be absolute.
Returns: true if path starts with leading; false otherwise.
Since: Ant 1.7
It doesn't really test for symbolic links but whether the canonical and absolute paths of the file are identical--this may lead to false positives on some platforms.
Parameters: parent the parent directory of the file to test name the name of the file to test.
Returns: true if the file is a symbolic link.
Throws: IOException on error.
Since: Ant 1.5
Parameters: source source file (should be the older). dest dest file (should be the newer). granularity an offset added to the source time.
Returns: true if the source is older than the dest after accounting for granularity.
Since: Ant 1.6.3
Parameters: source source file (should be the older). dest dest file (should be the newer).
Returns: true if the source is older than the dest, taking the granularity into account.
Since: Ant 1.6.3
Parameters: sourceTime timestamp of source file. destTime timestamp of dest file. granularity os/filesys granularity.
Returns: true if the dest file is considered up to date.
Parameters: sourceTime timestamp of source file. destTime timestamp of dest file.
Returns: true if the dest file is considered up to date.
Deprecated: since 1.7. Use getFileUtils instead, FileUtils do not have state.
Factory method.Returns: a new instance of FileUtils.
This includes:
Parameters: path the path to be normalized.
Returns: the normalized version of the path.
Throws: java.lang.NullPointerException if path is null.
Parameters: rdr the reader from which to read.
Returns: the contents read out of the given reader.
Throws: IOException if the contents could not be read out from the reader.
Parameters: rdr the reader from which to read. bufferSize the buffer size to use when reading.
Returns: the contents read out of the given reader.
Throws: IOException if the contents could not be read out from the reader.
Parameters: leading The leading path, must not be null, must be absolute. path The path to remove from, must not be null, must be absolute.
Returns: path's normalized absolute if it doesn't start with leading; path's path with leading's path removed otherwise.
Since: Ant 1.5
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.
Since: Ant 1.6
new File(file, filename)
in that
the resulting File's path will always be a normalized,
absolute pathname. Also, if it is determined that
filename
is context-relative, file
will be discarded and the reference will be resolved using
available context/state information about the filesystem.
Parameters: file the "reference" file for relative paths. This
instance must be an absolute file and must not contain
"./" or "../" sequences (same for \ instead
of /). If it is null, this call is equivalent to
new java.io.File(filename).getAbsoluteFile()
.
filename a file name.
Returns: an absolute file.
Throws: java.lang.NullPointerException if filename is null.
Parameters: reader the input to read from.
Returns: the string.
Throws: IOException if unable to read from reader.
Parameters: file the file whose modified time is to be set time the time to which the last modified time is to be set. if this is -1, the current time is used.
file:
URI that represents the
external form of the given pathname.
Will be an absolute URI if the given path is absolute.
This code encodes non ASCII characters too.
The coding of the output is the same as what File.toURI().toASCIIString() produces
See dt-sysid which makes some mention of how characters not supported by URI Reference syntax should be escaped.Parameters: path the path in the local file system.
Returns: the URI version of the local path.
Since: Ant 1.6
File
object.
This is useful since the JVM by default internally converts VMS paths
to Unix style.
The returned String is always an absolute path.
Parameters: f The File
to get the VMS path for.
Returns: The absolute VMS path to f
.
This method uses PathTokenizer to separate the input path into its components. This handles DOS style paths in a relatively sensible way. The file separators are then converted to their platform specific versions.
Parameters: toProcess The path to be translated.
May be null
.
Returns: the native version of the specified path or
an empty string if the path is null
or empty.
Since: ant 1.7
See Also: PathTokenizer