Как построить путь с базовым путем и относительным путем? - PullRequest
0 голосов
/ 19 марта 2019

Предположим, я пишу функцию для создания пути к файлу с заданным базовым путем и относительным путем:

def buildPath(basePath: String, relativePath: String) = ???

buildPath("a/b/c/d", "x")          // a/b/c/x
buildPath("a/b/c/d", "../../x")    // a/x
buildPath("a/b/c/d", "../../../x") // x
buildPath("a/b/c/d", "../e/x")     // a/b/c/e/x

Я могу написать buildPath, используя java.io.File:

def buildPath(basePath: String, relativePath: String): String = {
  val baseFile = new java.io.File(basePath)
  val toRemove = baseFile.getAbsolutePath.dropRight(baseFile.getPath.length)
  val file = new java.io.File(baseFile.getParentFile, relativePath)
  file.getCanonicalPath.drop(toRemove.length)
}

Эта реализация работает, но выглядит ужасно. Как бы вы улучшили это?

1 Ответ

1 голос
/ 19 марта 2019

new java.io.File("/" + basePath, relativePath).getCanonicalPath

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...