El método getPath() es parte de la clase File . Esta función devuelve la ruta del objeto de archivo dado. La función devuelve un objeto de string que contiene la ruta del objeto de archivo dado, mientras que el método getCanonicalPath() es parte de la clase Path . Esta función devuelve la ruta canónica del objeto de archivo dado. Si el nombre de ruta del objeto de archivo es Canonical, simplemente devuelve la ruta del objeto de archivo actual. La ruta canónica siempre es absoluta y única, la función elimina el ‘.’ ‘..’ de la ruta si está presente. Ahora, ambos métodos getPath() y getCanonicalPath()ambos son parte de la clase de archivo y ambos son métodos de archivo para obtener la ruta del sistema de archivos. Primero, entendemos la diferencia entre ambas rutas a partir de la siguiente estructura de archivos.
Ilustración: considerando una ruta aleatoria en el directorio de Windows
|--D: \--Article \--Test \--Program \--Python \--JAVA \Program1.java
Si se pasa la ruta » Python/../JAVA/Program1.java «, entonces el valor de Ruta y la ruta canónica es como la siguiente.
- Ruta: Python\..\JAVA\Program1.java
- Ruta canónica: d:\Program\JAVA\Program1.java
Ahora entendamos la diferencia entre ambos métodos.
(A) Diferencias teóricas
método getPath() | método getCanonicalPath() |
---|---|
Esta función devuelve la ruta de acceso abstracta como una string. | Esta función devuelve la ruta canónica del objeto de archivo dado. |
El nombre de ruta devuelto podría ser una ruta absoluta. | El camino canónico es siempre un camino absoluto y único. |
Si se usa String ruta de acceso para crear un objeto de archivo, simplemente devuelve la ruta de acceso. | Este método primero convierte este nombre de ruta a forma absoluta si es necesario. Para hacerlo, invocará el método getAbsolutePath() y luego lo asignará a su forma única. |
Si se usa una URL en el argumento del objeto de archivo, elimina el protocolo y devuelve el nombre del archivo. | Este método elimina los nombres redundantes como ” . “ y “.. ” del nombre de la ruta. Resolverá los enlaces simbólicos y convertirá las letras de unidad a un caso estándar. |
Este método no arrojará ninguna excepción. |
Este método arroja las siguientes excepciones. Excepción de seguridad: si no se puede acceder al valor de propiedad requerido. Excepción de E/S: si se produce una excepción de E/S. |
Ejemplo: Archivo f = nuevo archivo («c:\\usuarios\\..\\programa\\.\\archivo1.txt») Ruta :- c:\usuarios\..\programa\.\archivo1.txt |
Ejemplo: Archivo f = nuevo archivo («c:\\usuarios\\..\\programa\\.\\archivo1.txt») Ruta canónica: – c:\program\file1.txt |
Implementación: (B) Diferencias prácticas
Ejemplo
Java
// Java program to demonstrate the difference // between getPath() and getCanonicalPath() function // Importing input output classes import java.io.*; // Class public class GFG { // Main driver method public static void main(String args[]) { // Try block to check exceptions try { // Creating a file object File f = new File( "g:\\gfg\\A(7)PATH\\Test\\..\\file1.txt"); // Getting the Path of file object String path = f.getPath(); // Getting the Canonical path of the file object String canonical = f.getCanonicalPath(); // Display the file path of the file object // and also the Canonical path of file System.out.println("Path : " + path); System.out.println("Canonical path : " + canonical); } // Catch block to handle if exception/s occurs catch (Exception e) { // Exception message is printed where occurred System.err.println(e.getMessage()); } } }
Producción:
Path (getPath()): g:\gfg\A(7)PATH\Test\..\file1.txt path (getCanonicalPath()) : G:\gfg\A(7)PATH\file1.txt
Publicación traducida automáticamente
Artículo escrito por meetsuvariya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA