English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste exemplo, vamos aprender a usar o método String, a classe URI e o pacote java.nio.file para obter o caminho relativo de dois caminhos absolutos no Java.
import java.io.File; import java.net.URI; class Main {}} public static void main(String[] args) { try { //Dois caminhos absolutos File absolutePath1 = new File("C:\\Users\\Desktop\\w3codebox\Java\Time.java"); System.out.println("Caminho absoluto"1: " + absolutePath1); File absolutePath2 = new File("C:\\Users\\Desktop"); System.out.println("Caminho absoluto"2: " + absolutePath2); //Converter caminho absoluto para URI URI path1 = absolutePath1.toURI(); URI path2 = absolutePath2.toURI(); //Criar caminho relativo a partir de dois caminhos URI relativePath = path2.relativize(path)1); //Converter URI para string String path = relativePath.getPath(); System.out.println("Caminho relativo: " + path); } catch (Exception e) { e.getStackTrace(); } } }
Resultado de saída
Caminho absoluto1: C:\Users\Desktop\w3codebox\Java\Time.java Caminho absoluto2: C:\Users\Desktop Caminho relativo: w3codebox/Java/Time.java
No exemplo acima, temos dois chamados absolutePath1 e absolutePath2 caminho absoluto. Já usamos a classe URI para converter o caminho absoluto para o caminho relativo.
toURI() - Converter o objeto File paraUri
relativize() - Extrair o caminho relativo comparando os dois caminhos absolutos
getPath() - Converter URI para string
import java.io.File; class Main {}} public static void main(String[] args) { //Criar objeto de arquivo File file1 = new File("C:\\Users\\Desktop\\w3codebox\Java\Time.java"); File file2 = new File("C:\\Users\\Desktop"); // Converter o objeto arquivo para uma string String absolutePath1 = file1.toString(); System.out.println("Caminho absoluto"1: " + absolutePath1); String absolutePath2 = file2.toString(); System.out.println("Caminho absoluto"2: " + absolutePath2); //Obter caminho relativo String relativePath = absolutePath1.substring(absolutePath2.length()); System.out.println("Caminho absoluto: " + relativePath); } }
Resultado de saída
Caminho absoluto1: C:\Users\Desktop\w3codebox\Java\Time.java Caminho absoluto2: C:\Users\Desktop Caminho absoluto: \w3codebox\Java\Time.java
No exemplo acima, convertimos o caminho do arquivo para uma string. Observe a expressão
absolutePath1.substring(absolutePath2.length())
Aqui, o método substring () retorna absolutePath1parte, começando pelo índice igual a absolutePath2com início no comprimento. Isso é, a partir de absolutePath1remover absolutePath2 representa a string.
Para obter mais informações sobre como o substring funciona, acesseJava String substring().
import java.nio.file.Path; import java.nio.file.Paths; class Main {}} public static void main(String[] args) { //Criar objeto de arquivo Path absolutePath1 = Paths.get("C:\\Users\\Desktop\\w3codebox\Java\Time.java"); Path absolutePath2 = Paths.get("C:\\Users\\Desktop"); //Converter caminho absoluto para caminho relativo Path relativePath = absolutePath2.relativize(absolutePath1); System.out.println("Caminho relativo: " + relativePath); } }
Resultado de saída
Caminho relativo: w3codebox\Java\Time.java
No exemplo acima, usamos o método relativize() da interface Path para obter o caminho relativo de dois caminhos absolutos.