Détermination des liens symboliques dans Java 1.6
Dans le but de parcourir efficacement les répertoires dans un environnement Java 1.6, il devient impératif de faire la différence entre les répertoires et liens symboliques vers des répertoires. Si un objet File représente un répertoire, la condition suivante peut-elle déterminer avec précision s'il s'agit d'un lien symbolique ?
if (file.getAbsolutePath().equals(file.getCanonicalPath())) { // Real directory } else { // Possible symbolic link }
Réponse :
Bien que cette technique puisse indiquer un lien symbolique, il ne peut apporter une garantie définitive. Une inadéquation entre le chemin absolu et le chemin canonique pourrait simplement mettre en évidence la nécessité d'un traitement spécial, plutôt que de confirmer de manière concluante un lien symbolique.
Approche alternative :
Propositions Apache Commons une solution plus fiable. Il détermine si un fichier est un lien symbolique en comparant le chemin canonique de son répertoire parent avec son propre chemin canonique :
<code class="java">public static boolean isSymlink(File file) throws IOException { File canon; if (file.getParent() == null) { canon = file; } else { File canonDir = file.getParentFile().getCanonicalFile(); canon = new File(canonDir, file.getName()); } return !canon.getCanonicalFile().equals(canon.getAbsoluteFile()); }</code>
Cette méthode raffinée fournit un moyen plus précis d'identifier les liens symboliques en comparant le chemin canonique du fichier avec celui de son répertoire parent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!