diff options
Diffstat (limited to 'src/com/gitblit/utils/FileUtils.java')
-rw-r--r-- | src/com/gitblit/utils/FileUtils.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java index 29c9d0fe..f8d35c84 100644 --- a/src/com/gitblit/utils/FileUtils.java +++ b/src/com/gitblit/utils/FileUtils.java @@ -149,4 +149,33 @@ public class FileUtils { }
}
}
+
+ /**
+ * Determine the relative path between two files. Takes into account
+ * canonical paths, if possible.
+ *
+ * @param basePath
+ * @param path
+ * @return a relative path from basePath to path
+ */
+ public static String getRelativePath(File basePath, File path) {
+ File exactBase = getExactFile(basePath);
+ File exactPath = getExactFile(path);
+ return StringUtils.getRelativePath(exactBase.getPath(), exactPath.getPath());
+ }
+
+ /**
+ * Returns the exact path for a file. This path will be the canonical path
+ * unless an exception is thrown in which case it will be the absolute path.
+ *
+ * @param path
+ * @return the exact file
+ */
+ public static File getExactFile(File path) {
+ try {
+ return path.getCanonicalFile();
+ } catch (IOException e) {
+ return path.getAbsoluteFile();
+ }
+ }
}
|