Почти то, о чем просит заголовок.
Скажите, что я прошел путь "/ 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, а затем вернулся к старым образцам и пропустил лодку.