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/file

在Java中,如何测试后面的文件路径是否表示磁盘上的真实文件,该文件位于或等于第一个字符串表示的目录之下。这里有更多的例子来阐明这一点,包括一些在这里被质疑的检查函数的示例返回值:

/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,然后在字符串级别检查。。。听起来你好像知道如何回答自己的问题。我建议实施它,看看是否有效。如果有问题,您可以随时询问代码。