Java 1.6 - 确定符号链接(symbolic link)

标签 java java-6

在 DirectoryWalker 类中,我想查明 File 实例是否实际上是目录的符号链接(symbolic link)(假设 walker 在 UNIX 系统上行走)。鉴于我已经知道该实例是一个目录,以下是确定符号链接(symbolic link)的可靠条件吗?

File file;
// ...      
if (file.getAbsolutePath().equals(file.getCanonicalPath())) {
    // real directory ---> do normal stuff      
}
else {
    // possible symbolic link ---> do link stuff
}

最佳答案

Apache Commons 中使用的技术使用父目录的规范路径,而不是文件本身。我认为您不能保证不匹配是由于符号链接(symbolic link)造成的,但这很好地表明该文件需要特殊处理。

这是Apache code (受 their license 的约束),为了紧凑性进行了修改。

public static boolean isSymlink(File file) throws IOException {
  if (file == null)
    throw new NullPointerException("File must not be null");
  File canon;
  if (file.getParent() == null) {
    canon = file;
  } else {
    File canonDir = file.getParentFile().getCanonicalFile();
    canon = new File(canonDir, file.getName());
  }
  return !canon.getCanonicalFile().equals(canon.getAbsoluteFile());
}

关于Java 1.6 - 确定符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13800937/

相关文章:

java - 有时 java.util.Date 之前会失败

java - 如何使用分解的 jar 依赖项?

java - 在 jython udp 数据包中发送原始十六进制数据

java - 在 Windows 机器上使用 java 运行时类触发命令

java - 没有唯一键的 TreeMap

java - 如何在 java 1.6 项目中使用 java 1.3 编译的 Web 服务工作?

JavaFx:如果我想在 initialize() 之后,场景显示之前做一些事情,我该如何实现呢?

java - 设置排序算法

java - Arrays.sort(比较器)- Java 6 与 Java 7

jdbc - java.lang.ArrayIndexOutOfBoundsException : 7