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, которая может отличаться от ожидаемой.