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

Eli*_*jah 4 java symlink rhel

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

任何API主题的指导将不胜感激.我在搜索时遇到了障碍.

Nov*_*ata 7

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

Path toRealPath(LinkOption ... options)throws IOException返回现有文件的实际路径.此方法的精确定义取决于实现,但通常它是从此路径派生的,这是一个绝对路径,它定位与此路径相同的文件,但使用名称元素表示目录和文件的实际名称.例如,在文件系统上的文件名比较不区分大小写的情况下,名称元素表示实际情况下的名称.此外,生成的路径已删除冗余名称元素.

如果此路径是相对的,则首先获取其绝对路径,就像通过调用toAbsolutePath方法一样.

options数组可用于指示如何处理符号链接.默认情况下,符号链接将解析为其最终目标.如果存在选项NOFOLLOW_LINKS,则此方法不会解析符号链接.某些实现允许使用特殊名称(如"..")来引用父目录.在派生真实路径时,".."(或等效物)前面有非".."名称,那么实现通常会导致两个名称都被删除.当不解析符号链接且前面的名称是符号链接时,只有在保证结果路径将找到与此路径相同的文件时才会删除名称.

参数:options - 指示如何处理符号链接的选项返回:绝对路径表示此对象所在文件的实际路径抛出:IOException - 如果文件不存在或发生I/O错误SecurityException - 如果是安装默认提供程序和安全管理器,调用其checkRead方法以检查对文件的读访问权限,并且此路径不是绝对路径,调用其checkPropertyAccess方法以检查对系统属性user.dir的访问权限.

使用nio中的toRealPath()方法.NO_FOLLOW_LINKS LinkOption与您尝试执行的操作相反,因此请勿使用它.

Path realPath = aFile.toPath().toRealPath()

Path realPath = aPath().toRealPath()
Run Code Online (Sandbox Code Playgroud)

与此相关的一点就是toAbsolutePath,toRealPath抛出一个,IOException因为它实际上必须与文件系统交互才能找到真正的路径.


Eri*_*ler 6

java.nio.file.Files.readSymbolicLink 可能是你需要的。