3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
Apache Commons中使用的技術(shù)使用父目錄的規(guī)范路徑,而不是文件本身。我不認(rèn)為您可以保證不匹配是由于符號(hào)鏈接,但它是一個(gè)很好的跡象表明該文件需要特殊處理。
這是Apache代碼(受其許可),為了緊湊而進(jìn)行了修改。
public static boolean isSymlink(File file) throws IOException { if (file == null) throw new NullPointerException("File must not be null"); 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());}

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
Java 1.6不提供對(duì)文件系統(tǒng)的低級(jí)訪(fǎng)問(wèn)。看起來(lái)應(yīng)該包含在Java 1.7中的NIO 2將支持符號(hào)鏈接。可以使用新API的草稿。這里提到了符號(hào)鏈接,可以創(chuàng)建和跟蹤它們。我不確定應(yīng)該使用哪種方法來(lái)確定文件是否是符號(hào)鏈接。有一個(gè)用于討論NIO 2 的郵件列表 - 也許他們會(huì)知道。

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
另外,請(qǐng)注意file.isFile()
并file.isDirectory()
根據(jù)已解析的文件返回結(jié)果,因此兩者都返回false
時(shí)file
指的是目標(biāo)不存在的符號(hào)鏈接。
(我知道這本身并不是一個(gè)有用的答案,但它讓我絆倒了幾次,所以我認(rèn)為我應(yīng)該分享)
添加回答
舉報(bào)