Что может быть лучше, чем просто создание утилиты, которая преобразует относительные пути в абсолютные, - это создание утилиты, которая преобразует любой пройденный ей путь в абсолютный путь, чтобы вам не приходилось проверять на стороне клиента.
Код ниже работает для меня в обоих случаях, и я использовал тип String
в сигнатуре метода (как параметр, так и возвращаемое значение):
public static String toAbsolutePath(String maybeRelative) {
Path path = Paths.get(maybeRelative);
Path effectivePath = path;
if (!path.isAbsolute()) {
Path base = Paths.get("");
effectivePath = base.resolve(path).toAbsolutePath();
}
return effectivePath.normalize().toString();
}
Изменение кода вышевыставить Path
типы в сигнатуре метода тривиально (и на самом деле проще), но я думаю, что использование String
в сигнатуре дает большую гибкость.