Path p1 = Paths.get("/Users/jack/Documents/text1.txt");
Path p2 = Paths.get("/Users/jack/text2.txt");
Path result1 = p1.resolve(p2);
Path result2 = p1.relativize(p2);
System.out.println("result1: "+result1);
System.out.println("result2: "+result2);
OUTPUT
result1: /Users/jack/text2.txt
result2: ../../text2.txt
I cannot understand how resolve() and relativize() works?
What is the actual use of result1 and result2?
解决方案
These are the code snippets from my code base that help you to understand the use of the resolve() method
private File initUsersText() throws Exception
{
Path dir = testdir.getPath().toRealPath();
FS.ensureDirExists(dir.toFile());
File users = dir.resolve("users.txt").toFile();
writeUser( users );
return users;
}
private File initUsersText() throws Exception
{
Path dir = testdir.getPath().toRealPath();
FS.ensureDirExists(dir.toFile());
File users = dir.resolve("users.txt").toFile();
writeUser( users );
return users;
}
And these are the examples of the use of relativize()
public ScopePath pathToClassName(Path file) {
if (!isValidClass(file))
return null;
Path relativePath = root.relativize(root.resolve(file));
String withoutExtension = removeExtension(relativePath.toString());
return new ScopePath(withoutExtension.replace(File.separator, "."));
}
private String getRelativePath(Path p) {
String relativePath = packageDir.relativize(p)
.toString();
if (File.separator.equals("\\")) {
relativePath = relativePath.replace("\\", "/");
}
return relativePath;
}
本文介绍了Java中Path类的resolve()和relativize()方法的工作原理。resolve()用于合并两个路径,将第二个路径附加到第一个路径上。relativize()则返回从一个路径到另一个路径的相对路径。示例代码展示了这两个方法的使用场景,如文件系统的路径操作和构建相对路径。
1043

被折叠的 条评论
为什么被折叠?



