跳到主要内容

Java 程序:从两个绝对路径获取相对路径

示例 1:使用 URI 类从两个绝对路径获取相对路径

import java.io.File;
import java.net.URI;

class Main {
public static void main(String[] args) {

try {

// 两个绝对路径
File absolutePath1 = new File("C:\\Users\\Desktop\\Programiz\\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\Programiz\Java\Time.java
绝对路径2: C:\Users\Desktop
相对路径: Programiz/Java/Time.java

在上面的示例中,我们有两个名为 absolutePath1absolutePath2 的绝对路径。我们使用了 URI 类将绝对路径转换为相对路径。

  • toURI() - 将 File 对象转换为 Uri
  • relativize() - 通过比较两个绝对路径来提取相对路径
  • getPath() - 将 Uri 转换为字符串

推荐阅读

示例 2:使用字符串方法从两个绝对路径获取相对路径

import java.io.File;

class Main {
public static void main(String[] args) {

// 创建文件对象
File file1 = new File("C:\\Users\\Desktop\\Programiz\\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\Programiz\Java\Time.java
绝对路径2: C:\Users\Desktop
绝对路径: \Programiz\Java\Time.java

在上面的示例中,我们将文件路径转换为字符串。注意表达式,

absolutePath1.substring(absolutePath2.length())

这里,substring() 方法从 absolutePath1索引 等于 absolutePath2 长度的位置开始返回部分字符串。也就是说,absolutePath2 表示的字符串从 absolutePath1 中被移除。

要了解更多关于 substring 如何工作的信息,请访问 Java String substring()

示例 3:使用 java.nio.file 包从两个绝对路径获取相对路径

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\\Programiz\\Java\\Time.java");
Path absolutePath2 = Paths.get("C:\\Users\\Desktop");

// 将绝对路径转换为相对路径
Path relativePath = absolutePath2.relativize(absolutePath1);
System.out.println("相对路径: " + relativePath);

}
}

输出

相对路径: Programiz\Java\Time.java

在上面的

示例中,我们使用了 Path 接口的 relativize() 方法从两个绝对路径获取相对路径。

推荐阅读