org.apache.tools.ant.util
public class SymbolicLinkUtils extends Object
Since: Ant 1.8.0
Constructor Summary | |
---|---|
protected | SymbolicLinkUtils()
Empty constructor. |
Method Summary | |
---|---|
void | deleteSymbolicLink(File link, Task task)
Delete a symlink (without deleting the associated resource).
|
static SymbolicLinkUtils | getSymbolicLinkUtils()
Method to retrieve The SymbolicLinkUtils, which is shared by
all users of this method. |
boolean | isDanglingSymbolicLink(String name)
Checks whether a given file is a broken symbolic link.
|
boolean | isDanglingSymbolicLink(File file)
Checks whether a given file is a broken symbolic link.
|
boolean | isDanglingSymbolicLink(File parent, String name)
Checks whether a given file is a broken symbolic link.
|
boolean | isSymbolicLink(File file)
Checks whether a given file is a symbolic link.
|
boolean | isSymbolicLink(String name)
Checks whether a given file is a symbolic link.
|
boolean | isSymbolicLink(File parent, String name)
Checks whether a given file is a symbolic link.
|
This is a utility method that removes a unix symlink without removing the resource that the symlink points to. If it is accidentally invoked on a real file, the real file will not be harmed, but silently ignored.
Normaly this method works by getting the canonical path of the link, using the canonical path to rename the resource (breaking the link) and then deleting the link. The resource is then returned to its original name inside a finally block to ensure that the resource is unharmed even in the event of an exception.
There may be cases where the algorithm described above doesn't work, in that case the method tries to use the native "rm" command on the symlink instead.
Parameters: link A File
object of the symlink to delete. task An Ant Task required if "rm" needs to be invoked.
Throws: IOException If calls to File.rename
,
File.delete
or File.getCanonicalPath
fail. BuildException if the execution of "rm" failed.
Returns: an instance of SymbolicLinkUtils.
It doesn't really test for symbolic links but whether Java reports that the File doesn't exist but its parent's child list contains it--this may lead to false positives on some platforms.
Note that #isSymbolicLink returns false if this method returns true since Java won't produce a canonical name different from the abolute one if the link is broken.
Parameters: name the name of the file to test.
Returns: true if the file is a broken symbolic link.
Throws: IOException on error.
It doesn't really test for symbolic links but whether Java reports that the File doesn't exist but its parent's child list contains it--this may lead to false positives on some platforms.
Note that #isSymbolicLink returns false if this method returns true since Java won't produce a canonical name different from the abolute one if the link is broken.
Parameters: file the file to test.
Returns: true if the file is a broken symbolic link.
Throws: IOException on error.
It doesn't really test for symbolic links but whether Java reports that the File doesn't exist but its parent's child list contains it--this may lead to false positives on some platforms.
Note that #isSymbolicLink returns false if this method returns true since Java won't produce a canonical name different from the abolute one if the link is broken.
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 broken symbolic link.
Throws: IOException on error.
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: file the file to test. Must not be null.
Returns: true if the file is a symbolic link.
Throws: IOException on error.
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: name the name of the file to test.
Returns: true if the file is a symbolic link.
Throws: IOException on error.
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.