gpt4 book ai didi

java - Java 8中评估/path/a是否是/path的子目录的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 02:08:40 26 4
gpt4 key购买 nike

基本上就是标题所要求的。

假设我传递了“/tmp/foo/bar”路径,并且我想特别确保该路径是路径“/tmp”的子目录,最“Java 8”的方式是什么正在做这个吗?

具体来说,我有兴趣问“给定两个独立的路径,/foo和/foo/bar/baz,如何在不递归目录树的情况下测试/foo/bar/baz是否是/foo的子目录?”我对探索/foo 下的所有子目录并找到下游/foo/bar/baz 不感兴趣。

我一直在思考

@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 的边缘,然后又回到旧模式并错过了机会。

最佳答案

boolean <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html#startsWith-java.nio.file.Path-" rel="noreferrer noopener nofollow">startsWith</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html" rel="noreferrer noopener nofollow">Path</a> other)

Tests if this path starts with the given path.

关于java - Java 8中评估/path/a是否是/path的子目录的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50731024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com