gpt4 book ai didi

java - 如何读取损坏的符号链接(symbolic link)指向的路径?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:09 25 4
gpt4 key购买 nike

如果 symlink 是一个对应符号链接(symbolic link)的文件对象,那么:

File target = symlink.getCanonicalPath();

…成功返回它指向的目标。 Paths#toRealPath() 也适用于相同的情况。

但是,如果符号链接(symbolic link)断开(悬挂),上述两个 API 都无法返回表示(不存在)的 File(或 Path)它指向的东西。

我正在编写一个需要能够读取这些值的工具,即使是悬挂符号链接(symbolic link)。我使用什么 API 来获取符号链接(symbolic link)指向的文件或目录(无论符号链接(symbolic link)是否正确或损坏)?

更新

根据接受的答案,可以使用以下方式获取符号链接(symbolic link)的目标(即使是损坏的链接):

Path target = Files.readSymbolicLink(Paths.get("/some/directory/symlink"));

... 如果 target 是相对的,您可以通过执行以下操作根据找到符号链接(symbolic link)本身的位置取消引用它:

Paths.get("/some/directory/symlink").resolveSibling(".").resolve(target);

最佳答案

可以使用java的nio文件系统api:

Path target = Files.readSymbolicLink(Paths.get("/symlink"));

Java documentation规定“链接的目标不需要存在”。

关于java - 如何读取损坏的符号链接(symbolic link)指向的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42258768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com