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 de arquivo retorna o nome do caminho abstrato como String. Se o nome do caminho String for usado para criar o objeto File, ele simplesmente retorna o argumento do nome do caminho. Se URI for usado como argumento, então ele remove o protocolo e retorna o nome do arquivo.
  2. getAbsolutePath(): Este método de caminho de 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 de arquivo for criado usando um caminho relativo, o nome do caminho absoluto é resolvido de uma maneira dependente do sistema. Em sistemas UNIX, um nome de caminho relativo é tornado absoluto resolvendo-o contra o diretório do usuário atual. Em sistemas Microsoft Windows, um nome de caminho relativo é tornado absoluto resolvendo-o contra o diretório atual do drive nomeado pelo nome do caminho, se houver; se não, é 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 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 caso padrão (em plataformas Microsoft Windows).

Exemplo de Caminho de Arquivo 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());
	}

}

Abaixo, a imagem mostra a saída produzida pelo programa de caminho do arquivo java acima. A saída é autoexplicativa. Com base na saída, usar o caminho canônico é mais adequado para evitar problemas devido a caminhos relativos. Além disso, observe que os métodos de caminho do 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 diferentes tipos de caminho de arquivo em java.

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

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