<分区>
我似乎找不到解决方案。
我有两条路,比如:
D:/Views/me/a.b
和
D:/Views/me/a
或
D:/Views/me/a.b
和
D:/Views/me/a.b/x/y
我必须确保一个文件/目录不是另一个文件/目录的子目录。
我试过 Contains
但在这种情况下它对我不起作用?
<分区>
我似乎找不到解决方案。
我有两条路,比如:
D:/Views/me/a.b
和
D:/Views/me/a
或
D:/Views/me/a.b
和
D:/Views/me/a.b/x/y
我必须确保一个文件/目录不是另一个文件/目录的子目录。
我试过 Contains
但在这种情况下它对我不起作用?
最佳答案
我认为Path和 Paths from java.nio.file 在这里很有用(如果你至少有 Java 7)。
public static void main(String[] args) {
Path p1 = Paths.get("D:/Views/me/a.b");
Path p2 = Paths.get("D:/Views/me/a");
System.out.println(isChild(p1, p2));
System.out.println(isChild(p2, p1));
Path p3 = Paths.get("D:/Views/me/a.b");
Path p4 = Paths.get("D:/Views/me/a.b/x/y");
System.out.println(isChild(p3, p4));
System.out.println(isChild(p4, p3));
}
//Check if childCandidate is child of path
public static boolean isChild(Path path, Path childCandidate) {
return childCandidate.startsWith(path);
}
您可以根据需要考虑在检查之前在路径上使用 toAbsolutePath() 或 toRealPath()。
这是 Path Operations 的官方 Java 教程.
关于Java:检查路径是否是文件的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28698125/