Учитывая объект Java File, как я могу определить, ссылается ли он на символическую ссылку?
(Если это помогает / имеет значение, я знаю, что файл относится к каталогу, а не к файлу)
File.getCanonicalPath() разрешает символические ссылки
File.getCanonicalPath()
Каноническое имя пути является как абсолютным, так и уникальным. Точное определение канонической формы зависит от системы. Этот метод сначала преобразует этот путь в абсолютную форму, если необходимо, как если бы он вызывал метод getAbsolutePath (), а затем отображает его в его уникальную форму системно-зависимым способом. Обычно это включает в себя удаление избыточных имен, таких как "." и ".." из пути, разрешения символических ссылок (на платформах UNIX) и преобразования букв дисков в стандартный регистр (на платформах Microsoft Windows).
Я полагаю, вы можете сравнить результат getCanonicalPath() и getAbsolutePath().
getCanonicalPath()
getAbsolutePath()
Обновление: Похоже, этот вопрос уже задавался - проверьте ответы там
Также вы можете использовать isSymbolicLink (Path path) метод. Это будет надежнее.
java.io.File file = ...; boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());
Подобные примеры из Java Doc ' Обнаружение символической ссылки '.