Caminho do Arquivo Java, Caminho Absoluto e Caminho Canônico

Hoje vamos analisar o caminho do arquivo Java. O caminho do arquivo Java pode ser abstrato, absoluto ou canônico.

Caminho do Arquivo Java

java.io.File contém três métodos para determinar o caminho do arquivo, vamos explorá-los neste tutorial.

  1. getPath(): Este método de caminho do arquivo retorna o nome do caminho abstrato como String. Se uma String de nome do caminho é usada para criar o objeto File, ele simplesmente retorna o argumento do caminho. Se URI é usado como argumento, então ele remove o protocolo e retorna o nome do arquivo.
  2. getAbsolutePath(): Este método de caminho do arquivo retorna o caminho absoluto do arquivo. Se o arquivo for criado com um nome de caminho absoluto, ele simplesmente retorna o nome do caminho. Se o objeto do arquivo for criado usando um caminho relativo, o nome do caminho absoluto é resolvido de maneira dependente do sistema. Em sistemas UNIX, um nome de caminho relativo é transformado em absoluto resolvendo-o contra o diretório do usuário atual. Em sistemas Microsoft Windows, um nome de caminho relativo é transformado em absoluto resolvendo-o contra o diretório atual da unidade nomeada pelo nome do caminho, se houver; caso contrário, ele é resolvido contra o diretório do usuário atual.
  3. [getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())(): Este método de caminho retorna o nome do caminho canônico que é tanto absoluto quanto único. Este método primeiro converte este nome do caminho para a forma absoluta, se necessário, como se estivesse invocando o método getAbsolutePath, e então mapeia-o para sua forma única de maneira dependente do sistema. Isso geralmente envolve a remoção de nomes redundantes como “.” e “…” do nome do caminho, resolvendo links simbólicos (em plataformas UNIX) e convertendo letras de unidade para um formato padrão (em plataformas Microsoft Windows).

Exemplo de Caminho de Arquivo em Java

Vamos ver diferentes casos do caminho do arquivo em java com um programa simples.

package com.journaldev.files;

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

public class JavaFilePath {

	public static void main(String[] args) throws IOException, URISyntaxException {
		File file = new File("/Users/pankaj/test.txt");
		printPaths(file);
		// caminho relativo
		file = new File("test.xsd");
		printPaths(file);
		// caminhos relativos complexos
		file = new File("/Users/pankaj/../pankaj/test.txt");
		printPaths(file);
		// caminhos URI
		file = new File(new URI("file:///Users/pankaj/test.txt"));
		printPaths(file);
	}

	private static void printPaths(File file) throws IOException {
		System.out.println("Absolute Path: " + file.getAbsolutePath());
		System.out.println("Canonical Path: " + file.getCanonicalPath());
		System.out.println("Path: " + file.getPath());
	}

}

A imagem abaixo mostra a saída produzida pelo programa de caminho de arquivo java acima. A saída é autoexplicativa. Com base na saída, usar o caminho canônico é mais adequado para evitar quaisquer problemas devido a caminhos relativos. Além disso, observe que os métodos de caminho de arquivo java não verificam se o arquivo existe ou não. Eles apenas funcionam no nome do caminho do arquivo usado ao criar o objeto File. Isso é tudo para os diferentes tipos de caminho de arquivo em java.

Você pode conferir mais exemplos de IO em Java em nosso Repositório do GitHub.

Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical