Saltar al contenido

¿Qué es un “camino canónico”?

Solución:

El objetivo de hacer cualquier cosa “canónico” es para que puedas comparar dos cosas. Por ejemplo, ambos ../../here/bar/x y ./test/../../bar/x puede referirse a la misma ubicación, pero no puede hacer una comparación textual en las dos rutas. Sin embargo, si los convierte en su representación canónica, ambos se vuelven ../bar/xy vemos que en realidad se refieren a lo mismo.

En resumen, a menudo ocurre que tiene muchas formas de referirse a una cosa, y en ese caso es posible que pueda definir una representación canónica cual es único y que le permite controlar las colecciones de tales cosas.

(Si está buscando más ejemplos, todas las matemáticas están llenas de construcciones “canónicas” para todo tipo de objetos, y en gran medida con el mismo propósito en mente. Tal vez este artículo de Wikipedia pueda proporcionar algunas instrucciones adicionales).

Una buena forma de definir una ruta canónica será: the shortest absolute path (corto, en el sentido de longitud de cadena).

Este es un ejemplo de la diferencia entre una ruta absoluta y una canónica:

camino absoluto: C:abc..abcfile.txt

camino canónico: C:abcfile.txt

Lo que es una ruta canónica (o su diferencia de una ruta absoluta) depende del sistema.
Normalmente, si una ruta (completa) contiene alias, atajos o enlaces simbólicos, la ruta canónica resuelve todos estos en los directorios reales a los que hacen referencia.
Ejemplo: si /bin/a es un enlace simbólico, puede encontrarlo en cualquier lugar que solicite una ruta absoluta, por ejemplo, desde java.io.File # getAbsolutePath mientras que el archivo real (es decir, el objetivo real del enlace), es decir usr/local/bin/a sería devuelto como una ruta canónica, por ejemplo, desde java.io.File # getCanonicalPath

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *