English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Учебник по основам 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\\w3codebox\\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\w3codebox\Java\Time.java
Абсолютный путь 2: C:\Users\Desktop
Относительный путь: w3codebox/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\\w3codebox\\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\w3codebox\Java\Time.java
Абсолютный путь 2: C:\Users\Desktop
Абсолютный путь: \w3codebox\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\\w3codebox\\Java\\Time.java");
    Path absolutePath2 = Paths.get("C:\\Users\\Desktop");
    //Преобразование абсолютного пути в относительный
    Path relativePath = absolutePath2.relativize(absolutePath1);
    System.out.println("Относительный путь: " + relativePath);
  {}
{}

Результат вывода

Относительный путь: w3codebox\Java\Time.java

В上面的 примере, мы использовали метод relativize() интерфейса Path для получения относительного пути из двух абсолютных путей.

Java полная коллекция примеров