Интересно, в чем разница между использованием Paths.get () и Path.resolve, как в этом примере:
public static void main(String[] args) {
Path p1 = Paths.get("dir1","dir2","file.jpg");
Path p2 = Paths.get("").resolve("dir1/dir2/file.jpg");
System.out.println(p1.toString()); // yields: dir1/dir2/file.jpg
System.out.println(p2.toString()); // yields: dir1/dir2/file.jpg
}
Похоже, что оба ведут себя одинаково, но в приложении Java EE я наблюдал, чтоp1
получил домашний каталог, назначенный в качестве префикса.Я нашел ответ @Aleksandr Dubinsky на этот вопрос StackOverflow Как объединить пути в Java? , но я не понимаю смысла процитированного javadoc:
Обратите внимание, что Paths.get () (как это было предложено кем-то другим) не имеет перегрузки, принимающей Path, и выполнение Paths.get (path.toString (), childPath) является NOT тем же, что и resol ().Из документа Paths.get ():
Обратите внимание, что хотя этот метод очень удобен, его использование подразумевает предполагаемую ссылку на файловую систему по умолчанию и ограничивает полезность вызывающего кода.Следовательно, он не должен использоваться в коде библиотеки, предназначенном для гибкого повторного использования.Более гибкой альтернативой является использование существующего экземпляра Path в качестве привязки, такого как:
Path dir = ...
Path path = dir.resolve("file");
В частности, я не понимаю, что javadoc хочет сказать "будет означать"предполагаемая ссылка на файловую систему по умолчанию. "