📜  Java程序从两个绝对路径获取相对路径(1)

📅  最后修改于: 2023-12-03 15:02:05.789000             🧑  作者: Mango

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

在 Java 编程中,我们经常需要处理文件和路径。有时候,我们需要获取两个绝对路径之间的相对路径。这个功能在 Java 中是很容易实现的。

获取相对路径的方法

Java 中提供了一个 java.nio.file.Path 类,可以用它来处理文件路径。我们可以使用它提供的方法来获取两个绝对路径的相对路径。

import java.nio.file.Path;
import java.nio.file.Paths;

public class RelativePathExample {
    public static void main(String[] args) {
        // 创建两个绝对路径
        Path path1 = Paths.get("/home/user/Documents/file.txt");
        Path path2 = Paths.get("/home/user/Music/song.mp3");

        // 获取相对路径
        Path relativePath = path1.relativize(path2);

        // 输出相对路径
        System.out.println(relativePath);
    }
}

输出:

../../Music/song.mp3

上面的代码中,我们使用了 relativize() 方法来获取两个绝对路径的相对路径。这个方法返回的是一个 Path 对象,表示第一个路径相对于第二个路径的相对路径。

注意:在使用 relativize() 方法时,第一个路径必须是相对于第二个路径的,否则会抛出 IllegalArgumentException 异常。

获取文件所在目录的相对路径

有时候,我们需要根据一个文件的绝对路径来获取它所在目录的相对路径。这个功能也很容易实现。

import java.nio.file.Path;
import java.nio.file.Paths;

public class RelativeDirectoryExample {
    public static void main(String[] args) {
        // 创建一个文件的绝对路径
        Path filePath = Paths.get("/home/user/Documents/file.txt");
        
        // 获取文件所在目录的绝对路径
        Path dirPath = filePath.getParent();

        // 创建一个参考路径
        Path baseDirPath = Paths.get("/home/user");

        // 获取文件所在目录的相对路径
        Path relativeDirPath = baseDirPath.relativize(dirPath);

        // 输出文件所在目录的相对路径
        System.out.println(relativeDirPath);
    }
}

输出:

Documents

上面的代码中,我们首先使用 getPath() 方法创建了一个文件的绝对路径。然后,我们使用 getParent() 方法获取文件所在目录的绝对路径。接着,我们创建了一个参考路径,即文件所在目录的上级目录,用来计算相对路径。最后,我们使用 relativize() 方法来获取文件所在目录的相对路径。

总结

Java 提供了一些简单的方法来获取两个绝对路径的相对路径,以及文件所在目录的相对路径。这些方法可以使我们更方便地处理文件和路径。