Given a Java 'File' object, how can I detect whether or not it refers to a symlink?
(If it helps/matters, I know the file refers to a directory, not to a file)
Given a Java 'File' object, how can I detect whether or not it refers to a symlink?
(If it helps/matters, I know the file refers to a directory, not to a file)
Also you can use isSymbolicLink(Path path) method. It will be more reliable.
java.io.File file = ...;
boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());
Similar examples from Java Doc 'Detecting a Symbolic Link'.
Files.exists()
, what you often really want is !Files.notExists()
. But it wasn't the case 100% of the time either. This mess caused us to ban usage of the methods in our codebase, redirecting calls to our own versions which throw the exception. –
Thomsen File.getCanonicalPath()
resolves symlinks
A canonical pathname is both absolute and unique. The precise definition of canonical form is system-dependent. This method first converts this pathname to absolute form if necessary, as if by invoking the getAbsolutePath() method, and then maps it to its unique form in a system-dependent way. This typically involves removing redundant names such as "." and ".." from the pathname, resolving symbolic links (on UNIX platforms), and converting drive letters to a standard case (on Microsoft Windows platforms).
I assume you can compare the result of getCanonicalPath()
and getAbsolutePath()
.
Update: It appears this question has already been asked - check the answers there
Also you can use isSymbolicLink(Path path) method. It will be more reliable.
java.io.File file = ...;
boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());
Similar examples from Java Doc 'Detecting a Symbolic Link'.
Files.exists
, Files.isSymbolicLink
can sometimes return a false negative. –
Thomsen Files.exists()
, what you often really want is !Files.notExists()
. But it wasn't the case 100% of the time either. This mess caused us to ban usage of the methods in our codebase, redirecting calls to our own versions which throw the exception. –
Thomsen © 2022 - 2024 — McMap. All rights reserved.
Files.exists
,Files.isSymbolicLink
can sometimes return a false negative. – Thomsen