Обнаружение символической ссылки в Java - PullRequest
19 голосов
/ 22 марта 2010

Учитывая объект Java File, как я могу определить, ссылается ли он на символическую ссылку?

(Если это помогает / имеет значение, я знаю, что файл относится к каталогу, а не к файлу)

Ответы [ 2 ]

33 голосов
/ 22 марта 2010

File.getCanonicalPath() разрешает символические ссылки

Каноническое имя пути является как абсолютным, так и уникальным. Точное определение канонической формы зависит от системы. Этот метод сначала преобразует этот путь в абсолютную форму, если необходимо, как если бы он вызывал метод getAbsolutePath (), а затем отображает его в его уникальную форму системно-зависимым способом. Обычно это включает в себя удаление избыточных имен, таких как "." и ".." из пути, разрешения символических ссылок (на платформах UNIX) и преобразования букв дисков в стандартный регистр (на платформах Microsoft Windows).

Я полагаю, вы можете сравнить результат getCanonicalPath() и getAbsolutePath().

Обновление: Похоже, этот вопрос уже задавался - проверьте ответы там

19 голосов
/ 27 октября 2013

Также вы можете использовать isSymbolicLink (Path path) метод. Это будет надежнее.

java.io.File file = ...;
boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());

Подобные примеры из Java Doc ' Обнаружение символической ссылки '.

...