Java: проверьте существование файла символьной ссылки

Мы говорим о java 1.6 здесь. С тех пор symoblic ссылка еще не поддерживается, как может исследовать существование их.

1: скажите погоде, что сам файл связей существует (возвратите true, даже если связь разорвана),

2: перейдите по ссылке и скажите, что погодный файл лежания в основе существует.

Нет ли действительно никакой способ понять это кроме JNI?

12
задан solotim 1 February 2010 в 09:41
поделиться

4 ответа

На данный момент выглядит ... Если вы не пойдете с OpenJDK http://openjdk.java.net/projects/nio/javadoc/java/nio/file/attribute/basicfileattributes.html#issymboliclink ()

5
ответ дан 2 December 2019 в 21:23
поделиться

HMM..NOT еще не поддержал .. Это когда-либо поддерживалось, это вопрос, который приходит к моему разуму, глядя на этот вопрос ... Символические ссылки являются платформы, специфичными, а Java предполагается B платформа независимой. Я сомневаюсь, что во всяком случае возможно, с Java, как таковым .. Вы, возможно, придется прибегать к родным кодексу для этой части и использовать JNI для мостирования его с остальной частью вашей программы в Java.

1
ответ дан 2 December 2019 в 21:23
поделиться

Далее следует начать:

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, чтобы сделать соответствующие вызовы родных библиотек, специфичных для ОС.

1
ответ дан 2 December 2019 в 21:23
поделиться

Это медленно, но вы можете сравнить getAbsolutePath () и getCanonicalPath () файла. Поэтому используйте только за пределами критического для производительности пути кода.

5
ответ дан 2 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: