Java 比较两个文件路径的关系
将两个给定的文件路径视为字符串: /path/to/dir和/path/to/dir/file 在Java中,如何测试后面的文件路径是否表示磁盘上的真实文件,该文件位于或等于第一个字符串表示的目录之下。这里有更多的例子来阐明这一点,包括一些在这里被质疑的检查函数的示例返回值:Java 比较两个文件路径的关系,java,filepath,Java,Filepath,将两个给定的文件路径视为字符串: /path/to/dir和/path/to/dir/file 在Java中,如何测试后面的文件路径是否表示磁盘上的真实文件,该文件位于或等于第一个字符串表示的目录之下。这里有更多的例子来阐明这一点,包括一些在这里被质疑的检查函数的示例返回值: /path/to/dir /path/to/dir (true) /path/to/dir /path/to/dir/file (true) /path/to/dir /path
/path/to/dir /path/to/dir (true)
/path/to/dir /path/to/dir/file (true)
/path/to/dir /path (false)
/path/to/dir /path/to/dir/../../file (false)
/path/to/dir file (false)
/path/to/dir /path/to/dir/dir2/../ (true)
是否可以通过File方法.getCanonicalPath除去点,然后在字符串级别进行检查?也许有更好的办法。我无法找到.compareTo文件的确切功能。如果您有规范路径,可以执行以下操作:
String path1 = "/path/to/dir"
String path2 = "/path/to/dir/file"
path2.beginsWith(path1);
这个结果将是您的答案如果您有规范路径,您可以这样做:
String path1 = "/path/to/dir"
String path2 = "/path/to/dir/file"
path2.beginsWith(path1);
此结果将成为您的答案请使用本机路径操作。由于路径分隔符等处理不当,字符串操作可能会引入错误
Path path1 = Paths.get("/home").normalize();
Path path2 = Paths.get("/home/user/filename").normalize();
path2.startsWith(path1);
请使用本机路径操作。由于路径分隔符等处理不当,字符串操作可能会引入错误
Path path1 = Paths.get("/home").normalize();
Path path2 = Paths.get("/home/user/filename").normalize();
path2.startsWith(path1);
Path类支持equals,使您能够测试两条路径是否相等
startsWith和endsWith方法使您能够测试路径是以特定字符串开始还是以特定字符串结束
这些方法很容易使用。例如:
Path path = ...;
Path otherPath = ...;
Path beginning = Paths.get("/home");
Path ending = Paths.get("foo");
if (path.equals(otherPath)) {
// equality logic here
} else if (path.startsWith(beginning)) {
// path begins with "/home"
} else if (path.endsWith(ending)) {
// path ends with "foo"
}
Path类支持equals,使您能够测试两条路径是否相等
startsWith和endsWith方法使您能够测试路径是以特定字符串开始还是以特定字符串结束
这些方法很容易使用。例如:
Path path = ...;
Path otherPath = ...;
Path beginning = Paths.get("/home");
Path ending = Paths.get("foo");
if (path.equals(otherPath)) {
// equality logic here
} else if (path.startsWith(beginning)) {
// path begins with "/home"
} else if (path.endsWith(ending)) {
// path ends with "foo"
}
通过File方法.getCanonicalPath除去点,然后在字符串级别进行检查。。。听起来你好像知道如何回答自己的问题。我建议实施它,看看是否有效。如果你有问题,你可以随时询问你的代码。用File方法去掉点。getCanonicalPath,然后在字符串级别检查。。。听起来你好像知道如何回答自己的问题。我建议实施它,看看是否有效。如果有问题,您可以随时询问代码。