Java: vérifier l'existence du fichier de liens symboliques
Nous parlons de la version 1.6 de java ici. Depuis symoblic lien n'est pas encore pris en charge, comment pouvez examiner l'existence d'eux.
1: dites météo sur le lien du fichier lui-même existe (return true même si le lien est cassé)
2: suivez le lien et dites météo de fichiers sous-jacent existe.
Est-il vraiment aucun moyen de réaliser ceci à l'exception JNI?
source d'informationauteur solotim
Vous devez vous connecter pour publier un commentaire.
regarde de cette façon pour le moment... à moins que vous y allez avec openjdk http://openjdk.java.net/projects/nio/javadoc/java/nio/file/attribute/BasicFileAttributes.html#isSymbolicLink()
Il est lent, mais vous pouvez comparer getAbsolutePath() et getCanonicalPath() d'un Fichier. Donc, utiliser uniquement à l'extérieur d'un rendement chemin de code critique.
ce qui suit devrait vous donner un début:MODIFIER : Le ci-dessus ne fonctionnent pas comme je le pensais car le fichier.isDirectory() et file.isFile() résoudre un lien symbolique. (Nous vivre et d'apprendre!)
Si vous voulez une détermination précise, vous aurez besoin d'utiliser JNI pour le système d'exploitation natif spécifique de la bibliothèque des appels.
hmm..pas encore pris en charge..le sera jamais pris en charge est la question qui me vient à l'esprit en regardant cette question...les liens symboliques sont spécifiques de la plateforme Java et est censé b indépendant de la plateforme. je doute si rien de tel n'est possible qu'avec java en tant que tel..vous pouvez avoir recours à du code natif pour cette partie et l'utilisation de JNI de pont avec le reste de votre programme en java.
#2 est facile: il suffit d'utiliser
File.isFile
etc., qui va traverser le lien. La partie la plus difficile est le n ° 1.Donc, si vous ne pouvez pas utiliser
java.nio.file
et que vous voulez éviter JNI, etc., la seule chose que j'ai trouvé qui fonctionne:Pas terriblement efficace mais simple.