在此示例中,我们将学习使用String方法,URI类和java.nio.file包从Java中的两个绝对路径获取相对路径。
import java.io.File;
import java.net.URI;
class Main {
public static void main(String[] args) {
try {
//两个绝对路径
File absolutePath1 = new File("C:\\Users\\Desktop\\nhooo\\Java\\Time.java");
System.out.println("绝对路径1: " + absolutePath1);
File absolutePath2 = new File("C:\\Users\\Desktop");
System.out.println("绝对路径2: " + absolutePath2);
//将绝对路径转换为URI
URI path1 = absolutePath1.toURI();
URI path2 = absolutePath2.toURI();
//从两个路径创建相对路径
URI relativePath = path2.relativize(path1);
//将URI转换为字符串
String path = relativePath.getPath();
System.out.println("相对路径: " + path);
} catch (Exception e) {
e.getStackTrace();
}
}
}输出结果
绝对路径1: C:\Users\Desktop\nhooo\Java\Time.java 绝对路径2: C:\Users\Desktop 相对路径: nhooo/Java/Time.java
在上面的示例中,我们有两个名为 absolutePath1 和 absolutePath2 的绝对路径。我们已经使用URI类将绝对路径转换为相对路径。
toURI() - 将File对象转换为Uri
relativize() - 通过将两个绝对路径相互比较来提取相对路径
getPath() - 将URI转换为字符串
import java.io.File;
class Main {
public static void main(String[] args) {
//创建文件对象
File file1 = new File("C:\\Users\\Desktop\\nhooo\\Java\\Time.java");
File file2 = new File("C:\\Users\\Desktop");
// 将文件对象转换为字符串
String absolutePath1 = file1.toString();
System.out.println("绝对路径1: " + absolutePath1);
String absolutePath2 = file2.toString();
System.out.println("绝对路径2: " + absolutePath2);
//获取相对路径
String relativePath = absolutePath1.substring(absolutePath2.length());
System.out.println("绝对路径: " + relativePath);
}
}输出结果
绝对路径1: C:\Users\Desktop\nhooo\Java\Time.java 绝对路径2: C:\Users\Desktop 绝对路径: \nhooo\Java\Time.java
在上面的示例中,我们将文件路径转换为字符串。注意表达式
absolutePath1.substring(absolutePath2.length())
这里,substring ()方法返回 absolutePath1的一部分,从索引等于 absolutePath2的长度开始。也就是说,从 absolutePath1中删除 absolutePath2 表示的字符串。
要了解有关子字符串如何工作的更多信息,请访问Java String substring()。
import java.nio.file.Path;
import java.nio.file.Paths;
class Main {
public static void main(String[] args) {
//创建文件对象
Path absolutePath1 = Paths.get("C:\\Users\\Desktop\\nhooo\\Java\\Time.java");
Path absolutePath2 = Paths.get("C:\\Users\\Desktop");
//将绝对路径转换为相对路径
Path relativePath = absolutePath2.relativize(absolutePath1);
System.out.println("相对路径: " + relativePath);
}
}输出结果
相对路径: nhooo\Java\Time.java
在上面的示例中,我们使用了Path接口的relativize()方法从两个绝对路径获取相对路径。