Como determinar se um arquivo é um link no Unix?

Bom dia,

Assim como conseguimos determinar se uma referência qualquer trata-se de um arquivo ou diretório gostaria de saber se existe alguma forma simples (como nos exemplos abaixo) de determinar se a referência fornecida trata-se de um link no unix.
new File("/home/user1/file.txt").isFile(); // OU
new File("/home/user1/file.txt").isDirectory();

Agradeço desde já!

Não existe nada “pronto” como isFile() ou isDirectory(), precisa descobrir indiretamente.

Para isso pode-se usar o método getCanonicalPath(), que em sistemas Unix tem a caracteristica de resolver o caminho de links simbólicos. Se o canonical path for diferente do caminho absoluto do objeto File, é um link.

(Obs: Nunca testei isso, experimente aí e diz se deu certo…)

http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html#getCanonicalPath()
http://www.idiom.com/~zilla/Xfiles/javasymlinks.html