java - 用于获取文件夹的所有符号链接(symbolic link)的文件 API

标签 java file

Folder17
Folder18
Folder19 -> /myfolder/17
Folder20 -> /myfolder/17

我创建了从 Folder19Folder17Folder 20Folder17 的符号链接(symbolic link)

我可以使用Files.isSymbolicLink(path)来查找文件是否是符号链接(symbolic link)的。但还有其他办法吗?我想知道与我链接的所有文件夹。就像在这种情况下,我想知道 Folder17 的所有链接,它应该给我 Folder19Folder20

我在下面创建了类似下面的内容 cd/foo

mkdir b
ln -s /foo/b e
ln -s /foo/b f
ln -s /foo/b g
ls -la
    b
    e -> /foo/b
    f -> /foo/b
    g -> /foo/b

在我的java类中,我做了下面的事情。我期望返回大小为3的e,f,g。但是大小是0

    Path path = Paths.get("/foo/b");
    Collection<Path> paths      =  Files.walk(path)
            .filter(Files::isSymbolicLink)
            .filter(p -> {
                try {
                    return path.equals(Files.readSymbolicLink(p));
                } catch (IOException e) {
                    System.out.println("log");
                    throw new RuntimeException("An I/O error has occurred!");
                }
            })
            .collect(Collectors.toList());
    System.out.println(paths.size());
}
catch(Exception e)
{
    e.printStackTrace();
}

}

最佳答案

好问题。您可能会明白为什么它对于某些文件A来说是多余的。跟踪符号链接(symbolic link)到 A 的每个文件,因为这可能会占用大量空间。因此,浏览目录、检查文件 A 的符号链接(symbolic link)会很简单。 。您可以使用类似于以下内容的内容:

Files.walk(path)
     .filter(Files::isSymbolicLink)
     .filter(p -> {
         try {
             return path.equals(Files.readSymbolicLink(p));
         } catch (IOException e) {
             throw new RuntimeException("An I/O error has occurred!");
         }
     })
     .collect(Collectors.toList());

这将返回 List<Path>包含所有Path是指向 path 的符号链接(symbolic link).

注意:您可以使用 Files#walkFileTree如果需要,可以递归搜索这些目录。

关于java - 用于获取文件夹的所有符号链接(symbolic link)的文件 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50401697/

相关文章:

php - 从数据库获取图像,在服务器上重命名图像并使用 PHP 将新图像名称保存在数据库中

python - 使用 pickle 将巨大的二元字典保存到文件中

java - 我有一个 JMenuItem 实例(比如说 TEMP)。我想知道添加了 TEMP 的 JMenu 的名称是什么。如何?

linux - 如何找到只对所有者具有特定权限的文件?

java - 我可以在一种测试方法中测试多个抛出的异常吗?

java - 将 Lombok 添加到 Intellij 中的 Gradle 项目

C++ |计算文件中两个特定点之间的行数

无法打开 Python 文件

java - 这个命令是什么意思 - "nohup ./standalone.sh -b 0.0.0.0 &"?

java - 在 Android 中使用 RadioButton 启用夜间模式