Folder17
Folder18
Folder19 -> /myfolder/17
Folder20 -> /myfolder/17
У меня есть созданная символическая ссылка от Folder19
до Folder17
и Folder 20
до Folder17
. Я могу использовать Files.isSymbolicLink(path)
, чтобы определить, является ли файл символической ссылкой.Но есть ли другой путь?Я хотел знать все папки, связанные со мной.Например, в этом случае я хочу знать все ссылки для Folder17
, которые должны дать мне Folder19
и Folder20
, которые я создал ниже, что-то вроде ниже 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, я сделал ниже. Я ожидал вернуть e, f, g с размером 3. Но размер 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();
}
}