簡體   English   中英

Windows中的Java和符號鏈接

[英]Java & symbolic links in windows

我一直在玩java.nio.file.Files並偶然發現了一個奇怪的問題。 我有一個符號鏈接,但Files.isSymbolicLink()和符號鏈接屬性Files.readAttributes()顯示不同的結果。

這是我創建鏈接的方式:

D:\DEV\test>mklink /D link1 components
symbolic link created for link1 <<===>> components

相關的java代碼:

Path symLinkDirectory = Paths.get("D:\\DEV\\test\\link1");
DosFileAttributes dosFileAttributes = Files.readAttributes(symLinkDirectory, DosFileAttributes.class);

System.out.println(String.format(
        "Files.isSymbolicLink(): %b, dosFileAttributes.isSymbolicLink(): %b", 
        Files.isSymbolicLink(symLinkDirectory), dosFileAttributes.isSymbolicLink()));

給我這個輸出:

Files.isSymbolicLink():true,dosFileAttributes.isSymbolicLink():false

誰能告訴我為什么屬性報告文件不是符號鏈接? 我錯過了什么嗎? 這也發生在unix上嗎?

您需要將LinkOption.NOFOLLOW_LINKS添加到LinkOption.NOFOLLOW_LINKS的調用中,以獲取鏈接本身的屬性而不是鏈接目標。

DosFileAttributes dosFileAttributes = Files.readAttributes(symLinkDirectory,
                        DosFileAttributes.class, LinkOption.NOFOLLOW_LINKS);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM