Java et liens symboliques dans Windows

J’ai joué avec java.nio.file.Files et suis tombé sur un problème étrange. J’ai un lien symbolique, mais Files.isSymbolicLink() et l’atsortingbut de lien symbolique de Files.readAtsortingbutes() affichent des résultats différents.

Voici comment je crée le lien:

 D:\DEV\test>mklink /D link1 components symbolic link created for link1 <> components 

Code Java pertinent:

 Path symLinkDirectory = Paths.get("D:\\DEV\\test\\link1"); DosFileAtsortingbutes dosFileAtsortingbutes = Files.readAtsortingbutes(symLinkDirectory, DosFileAtsortingbutes.class); System.out.println(Ssortingng.format( "Files.isSymbolicLink(): %b, dosFileAtsortingbutes.isSymbolicLink(): %b", Files.isSymbolicLink(symLinkDirectory), dosFileAtsortingbutes.isSymbolicLink())); 

Me donne cette sortie:

Files.isSymbolicLink (): true, dosFileAtsortingbutes.isSymbolicLink (): false

Quelqu’un pourrait-il me dire pourquoi les atsortingbuts indiquent que le fichier n’est pas un lien symbolique? Est-ce que je manque quelque chose? Est-ce que cela se passe aussi sur Unix?

Vous devez append LinkOption.NOFOLLOW_LINKS à l’appel de readAtsortingbutes pour obtenir les atsortingbuts du lien lui-même au lieu de la cible du lien.

 DosFileAtsortingbutes dosFileAtsortingbutes = Files.readAtsortingbutes(symLinkDirectory, DosFileAtsortingbutes.class, LinkOption.NOFOLLOW_LINKS);