JAVA如何找到符号链接指向的目标文件路径?

时间:2017-05-01 13:43:35

标签: java symlink rhel

早上好, 我试图在Java中找到一种方法来找出符号链接指向的文件路径。 我们有一个监视符号链接文件夹的系统,根据文件名做一些事情,删除那个符号链接文件。 我需要做的是找出每个符号链接文件指向的位置,这样我也可以在符号链接时删除该文件。 这是使用Java 这是在RHEL系统上。

非常感谢API主题的任何指导。我在搜索时遇到了障碍。

2 个答案:

答案 0 :(得分:6)

https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html#toRealPath-java.nio.file.LinkOption...-

  

路径到路径(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可能就是您所需要的。