早上好, 我试图在Java中找到一种方法来找出符号链接指向的文件路径。 我们有一个监视符号链接文件夹的系统,根据文件名做一些事情,删除那个符号链接文件。 我需要做的是找出每个符号链接文件指向的位置,这样我也可以在符号链接时删除该文件。 这是使用Java 这是在RHEL系统上。
非常感谢API主题的任何指导。我在搜索时遇到了障碍。
答案 0 :(得分:6)
路径到路径(LinkOption ...选项) throws IOException返回现有文件的实际路径。这种方法的精确定义是依赖于实现的 一般来说,它来自这条路径,一条定位的绝对路径 与此路径相同的文件,但具有表示该路径的名称元素 目录和文件的实际名称。例如,在哪里 文件系统上的文件名比较不区分大小写 name元素代表实际案例中的名称。另外, 生成的路径已删除冗余名称元素。
如果此路径是相对的,则首先获得其绝对路径,如 如果通过调用toAbsolutePath方法。
options数组可用于指示符号链接的方式 处理。默认情况下,符号链接将解析为最终 目标。如果存在选项NOFOLLOW_LINKS,则此方法可以 不解决符号链接。一些实现允许特殊名称 例如“..”来指代父目录。在推导出真实的时候 路径,然后“..”(或等效的)前面有非“..”名称 实现通常会导致两个名称都被删除。什么时候 不解析符号链接,前面的名称是符号链接 然后只有在保证结果的情况下才删除名称 path将找到与此路径相同的文件。
参数:options - 指示符号链接的选项 handle返回:绝对路径表示文件的实际路径 由此对象定位抛出:IOException - 如果文件没有 存在或发生I / O错误SecurityException - 在的情况下 默认提供程序,安装了安全管理器,其checkRead 调用方法来检查对文件的读访问权以及此处 path不是绝对的,它的checkPropertyAccess方法被调用 检查对系统属性user.dir的访问权限
使用nio中的toRealPath()方法。 NO_FOLLOW_LINKS LinkOption与您尝试执行的操作相反,因此请勿使用它。
Path realPath = aFile.toPath().toRealPath()
Path realPath = aPath().toRealPath()
与此相关的是,与toAbsolutePath
不同,toRealPath
会抛出IOException
,因为它实际上必须与文件系统进行交互才能找到真正的路径。
答案 1 :(得分:4)
java.nio.file.Files.readSymbolicLink
可能就是您所需要的。