给定一个File或Path目录对象,如何检查它是否是符号链接,如何将其解析为实际目录?
我尝试过File.getCannonicalFile(),Files.isSymbolicLink(Path)还有许多其他方法,但它们似乎都没有用.一个有趣的事情是Files.isDirectory(Path)返回false,而Files.exists(Path)事实却是如此.java是否将符号链接视为文件而不是目录?
fge*_*fge 14
如果要完全解析a Path指向实际内容,请使用.toRealPath():
final Path realPath = path.toRealPath();
Run Code Online (Sandbox Code Playgroud)
这将解决所有符号链接等.
但是,由于这可能会失败(例如,符号链接无法解析),因此您必须在此处理IOException.
因此,如果要测试符号链接是否指向现有目录,则必须执行以下操作:
Files.isDirectory(path.toRealPath());
Run Code Online (Sandbox Code Playgroud)
请注意以下内容Files.exists():默认情况下,它遵循符号链接.
这意味着如果您有一个符号链接作为path其目标不存在,那么:
Files.exists(path)
Run Code Online (Sandbox Code Playgroud)
将返回FALSE; 但是这个:
Files.exists(path, LinkOption.NOFOLLOW_LINKS)
Run Code Online (Sandbox Code Playgroud)
将返回TRUE.
在"Unix的说法",这之间的区别stat()和lstat().
| 归档时间: |
|
| 查看次数: |
7257 次 |
| 最近记录: |