Gymterview
junior

Что такое абсолютный путь и относительный путь?

Абсолютный (полный) путь — это путь, однозначно указывающий на конкретный файл или каталог в файловой системе, начиная от корневого каталога. Он не зависит от текущей рабочей директории.

Относительный путь — это путь, указывающий расположение файла относительно текущей рабочей директории приложения. Он интерпретируется по-разному в зависимости от того, откуда запущена программа.

Характеристика Абсолютный путь Относительный путь
Начинается с Корня FS (/ или C:\) Текущей директории
Пример (Linux) /home/user/docs/file.txt docs/file.txt
Пример (Windows) C:\Users\User\docs\file.txt docs\file.txt
Зависит от CWD Нет Да
Когда использовать Конфигурации, деплой, абсолютные ссылки Ресурсы внутри проекта, тесты

Специальные символы

  • . (точка) — текущий каталог.
  • .. (две точки) — родительский каталог.
  • ~ — домашний каталог пользователя (в Unix-shell, но не в Java API напрямую).

Работа в Java

Пример
File file = new File("data.txt");
System.out.println(file.getAbsolutePath());  // /home/user/project/data.txt
System.out.println(file.isAbsolute());       // false

Path path = Path.of("data.txt");
Path absolute = path.toAbsolutePath();       // /home/user/project/data.txt
Path normalized = Path.of("/home/user/../user/file.txt").normalize();
// /home/user/file.txt

На собеседовании: дайте определения обоих типов путей, приведите примеры и объясните, что относительный путь разрешается от текущей рабочей директории JVM, которая может отличаться от ожидаемой.