Ruta de archivo Java, ruta absoluta y ruta canónica

Hoy vamos a examinar la ruta de archivo de Java. La ruta de archivo de Java puede ser abstracta, absoluta o canónica.

Ruta de Archivo de Java

java.io.File contiene tres métodos para determinar la ruta del archivo, los exploraremos en este tutorial.

  1. getPath(): Este método de ruta de archivo devuelve la ruta del archivo abstracta como String. Si se utiliza String pathname para crear el objeto File, simplemente devuelve el argumento de pathname. Si se utiliza URI como argumento, entonces elimina el protocolo y devuelve el nombre del archivo.
  2. getAbsolutePath(): Este método de ruta de archivo devuelve la ruta absoluta del archivo. Si el File se crea con una ruta de archivo absoluta, simplemente devuelve el pathname. Si el objeto de archivo se crea utilizando una ruta relativa, la ruta de archivo absoluta se resuelve de manera dependiente del sistema. En los sistemas UNIX, una ruta de archivo relativa se convierte en absoluta resolviéndola contra el directorio actual del usuario. En los sistemas de Microsoft Windows, una ruta de archivo relativa se hace absoluta resolviéndola contra el directorio actual del disco nombrado por el pathname, si lo hay; si no, se resuelve contra el directorio del usuario actual.
  3. [getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())(): Este método de ruta devuelve el nombre de ruta canónico que es tanto absoluto como único. Este método primero convierte esta ruta en su forma absoluta si es necesario, como si invocara el método getAbsolutePath, y luego la mapea a su forma única de una manera dependiente del sistema. Esto generalmente implica eliminar nombres redundantes como “.” y “..” de la ruta, resolver enlaces simbólicos (en plataformas UNIX) y convertir letras de unidad a un caso estándar (en plataformas Microsoft Windows).

Ejemplo de Ruta de Archivo en Java

Vamos a ver diferentes casos de la ruta de archivo en java con un programa simple.

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);
		// ruta relativa
		file = new File("test.xsd");
		printPaths(file);
		// rutas relativas complejas
		file = new File("/Users/pankaj/../pankaj/test.txt");
		printPaths(file);
		// rutas 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());
	}

}

La siguiente imagen muestra la salida producida por el programa de ruta de archivo java anterior. La salida es autoexplicativa. Basándose en la salida, usar la ruta canónica es lo más adecuado para evitar cualquier problema debido a rutas relativas. Además, tenga en cuenta que los métodos de ruta de archivo de java no verifican si el archivo existe o no. Simplemente trabajan en el nombre de la ruta del archivo utilizado al crear el objeto File. Eso es todo para los diferentes tipos de rutas de archivo en java.

Puedes consultar más ejemplos de Java IO en nuestro Repositorio de GitHub.

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