Мы говорим о java 1.6 здесь. С тех пор symoblic ссылка еще не поддерживается, как может исследовать существование их.
1: скажите погоде, что сам файл связей существует (возвратите true, даже если связь разорвана),
2: перейдите по ссылке и скажите, что погодный файл лежания в основе существует.
Нет ли действительно никакой способ понять это кроме JNI?
На данный момент выглядит ... Если вы не пойдете с OpenJDK http://openjdk.java.net/projects/nio/javadoc/java/nio/file/attribute/basicfileattributes.html#issymboliclink ()
HMM..NOT еще не поддержал .. Это когда-либо поддерживалось, это вопрос, который приходит к моему разуму, глядя на этот вопрос ... Символические ссылки являются платформы, специфичными, а Java предполагается B платформа независимой. Я сомневаюсь, что во всяком случае возможно, с Java, как таковым .. Вы, возможно, придется прибегать к родным кодексу для этой части и использовать JNI для мостирования его с остальной частью вашей программы в Java.
Далее следует начать:
if (file.exists() && !file.isDirectory() && !file.isFile()) {
// it is a symbolic link (or a named pipe/socket, or maybe some other things)
}
if (file.exists()) {
try {
file.getCanonicalFile();
} catch (FileNotFoundException ex) {
// it is a broken symbolic link
}
}
EDIT : Вышеуказанное не работает, как я думал, потому что file.isDirectory() и file.isFile() разрешают символическую ссылку. (Мы живем и учимся!)
Если вам нужно точное определение, вам нужно использовать JNI, чтобы сделать соответствующие вызовы родных библиотек, специфичных для ОС.
Это медленно, но вы можете сравнить getAbsolutePath () и getCanonicalPath () файла. Поэтому используйте только за пределами критического для производительности пути кода.