public class PathTool
extends java.lang.Object
Constructor and Description |
---|
PathTool() |
Modifier and Type | Method and Description |
---|---|
private static java.lang.String |
buildRelativePath(java.lang.String toPath,
java.lang.String fromPath,
char separatorChar) |
private static java.lang.String |
determineRelativePath(java.lang.String filename,
java.lang.String separator)
Determines the relative path of a filename.
|
private static java.lang.String |
determineSeparator(java.lang.String filename)
Helper method to determine the file separator (forward or
backward slash) used in a filename.
|
static java.lang.String |
getRelativeFilePath(java.lang.String oldPath,
java.lang.String newPath)
This method can calculate the relative path between two pathes on a file system.
|
static java.lang.String |
getRelativePath(java.lang.String basedir,
java.lang.String filename)
Determines the relative path of a filename from a base directory.
|
(package private) static java.lang.String |
uppercaseDrive(java.lang.String path)
Cygwin prefers lowercase drive letters, but other parts of maven use uppercase
|
public static java.lang.String getRelativePath(@Nullable java.lang.String basedir, @Nullable java.lang.String filename)
$relativePath
context variable. The arguments to
this method may contain either forward or backward slashes as
file separators. The relative path returned is formed using
forward slashes as it is expected this path is to be used as a
link in a web page (again mimicking Anakia's behavior).
This method is thread-safe.
PathTool.getRelativePath( null, null ) = "" PathTool.getRelativePath( null, "/usr/local/java/bin" ) = "" PathTool.getRelativePath( "/usr/local/", null ) = "" PathTool.getRelativePath( "/usr/local/", "/usr/local/java/bin" ) = ".." PathTool.getRelativePath( "/usr/local/", "/usr/local/java/bin/java.sh" ) = "../.." PathTool.getRelativePath( "/usr/local/java/bin/java.sh", "/usr/local/" ) = ""
basedir
- The base directory.filename
- The filename that is relative to the base
directory.basedir
is null or zero-length,
or filename
is null or zero-length.public static java.lang.String getRelativeFilePath(java.lang.String oldPath, java.lang.String newPath)
PathTool.getRelativeFilePath( null, null ) = "" PathTool.getRelativeFilePath( null, "/usr/local/java/bin" ) = "" PathTool.getRelativeFilePath( "/usr/local", null ) = "" PathTool.getRelativeFilePath( "/usr/local", "/usr/local/java/bin" ) = "java/bin" PathTool.getRelativeFilePath( "/usr/local", "/usr/local/java/bin/" ) = "java/bin" PathTool.getRelativeFilePath( "/usr/local/java/bin", "/usr/local/" ) = "../.." PathTool.getRelativeFilePath( "/usr/local/", "/usr/local/java/bin/java.sh" ) = "java/bin/java.sh" PathTool.getRelativeFilePath( "/usr/local/java/bin/java.sh", "/usr/local/" ) = "../../.." PathTool.getRelativeFilePath( "/usr/local/", "/bin" ) = "../../bin" PathTool.getRelativeFilePath( "/bin", "/usr/local/" ) = "../usr/local"Note: On Windows based system, the
/
character should be replaced by \
character.oldPath
- old pathnewPath
- new patholdPath
.@Nonnull private static java.lang.String determineRelativePath(@Nonnull java.lang.String filename, @Nonnull java.lang.String separator)
filename
- The filename to parse.separator
- The separator used within the filename.private static java.lang.String determineSeparator(java.lang.String filename)
filename
- The filename parsed to determine the file
separator.filename
.
This value is either a forward or backward slash.static java.lang.String uppercaseDrive(@Nullable java.lang.String path)
path
- old path@Nonnull private static java.lang.String buildRelativePath(@Nonnull java.lang.String toPath, @Nonnull java.lang.String fromPath, char separatorChar)