Как правильно в Java 8 оценить, является ли / path / a подкаталогом / path? - PullRequest
0 голосов
/ 07 июня 2018

Почти то, о чем просит заголовок.

Скажите, что я прошел путь "/ tmp / foo / bar" и хочу специально убедиться, что этот путь является подкаталогом пути "/ tmp"Каков самый" Java 8 "способ это сделать?

В частности, меня интересует вопрос" При наличии двух независимых путей, / foo и / foo / bar / baz, как я могу проверить, если /foo / bar / baz - это подкаталог / foo без рекурсии дерева каталогов? "Мне не интересно изучать все подкаталоги в / foo и находить / foo / bar / baz downstream.

Я играл с идеей

@Test
public void test() {
    final Path root = Paths.get("/tmp");
    final Path path0 = Paths.get("/");
    final Path path1 = Paths.get("/opt/location/sub");
    final Path path2 = Paths.get("/tmp/location/sub");

    final Pattern ptrn = Pattern.compile("^[a-zA-Z].*$");

    final Function<Path, String> f = p -> root.relativize(p).toString();

    Assert.assertFalse("root",ptrn.matcher(f.apply(root)).matches());
    Assert.assertFalse("path0",ptrn.matcher(f.apply(path0)).matches());
    Assert.assertFalse("path1",ptrn.matcher(f.apply(path1)).matches());
    Assert.assertTrue("path2",ptrn.matcher(f.apply(path2)).matches());
}

, но это чувствуетсякак будто я работал до самого края Java 8, а затем вернулся к старым образцам и пропустил лодку.

1 Ответ

0 голосов
/ 07 июня 2018
boolean <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html#startsWith-java.nio.file.Path-" rel="nofollow noreferrer">startsWith</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html" rel="nofollow noreferrer">Path</a> other)

Проверяет, начинается ли этот путь с заданного пути.

...