Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

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

   Java 实例大全

在此示例中,我们将学习使用String方法,URI类和java.nio.file包从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\\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转换为字符串

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

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()

示例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\\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()方法从两个绝对路径获取相对路径。

Java 实例大全