Diferencia entre getPath() y getCononicalPath() en Java

Antes de discutir las diferencias, recapitulemos rápidamente los tres métodos.

  1. método getPath()
  2. método getAbsolutePath()
  3. método getCanonicalPath()

1. Método getPath()

getPath() es un método de clase URL. Convierte el nombre de ruta abstracto dado en una string de nombre de ruta. La string resultante usa el carácter separador de nombre predeterminado para separar los nombres en la secuencia de nombres.

Devuelve: la forma de string de una ruta de acceso abstracta

Ejemplo

Java

// Java Program illustrating the getPath() method
 
// Importing input output classes
import java.io.*;
 
// Class for getPath method()
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating a new file object in which input is
        // absolute path as in argument from the user
        File path1 = new File(
            "C:/Users/ASPIRE/Desktop/Java/Notes/Chapter one/demo.txt");
 
        // Print the display the path string for
        // absolute path using getPath() method
        System.out.println(
            "Output for given absolute path : "
            + path1.getPath());
 
        // Creating another object of File and this time
        // relative path is provided as an input
        File path2 = new File("Notes/../demo.txt");
 
        // Print the display the path string for
        // relative path using getPath() method
        System.out.println(
            "Output for given relative path : "
            + path2.getPath());
    }
}

Producción: 

2. Método getAbsolutePath()

getAbsolutePath() devuelve un objeto de ruta que representa la ruta absoluta de la ruta dada. Si el nombre de ruta dado ya es absoluto, entonces la string de nombre de ruta simplemente se devuelve como si lo hiciera el método getPath() . Si este nombre de ruta abstracto es el nombre de ruta abstracto vacío, se devuelve la string de nombre de ruta del directorio de usuario actual, que se denomina mediante la propiedad del sistema usuario ‘.dir'(). De lo contrario , este nombre de ruta se resuelve de forma dependiente del sistema.

Devuelve: la string de nombre de ruta absoluta que indica el mismo archivo o directorio que este nombre de ruta abstracto 

  • En el sistema Unix: un nombre de ruta relativo se hace absoluto resolviéndolo contra el directorio de usuario actual.
  • En Microsoft System: un nombre de ruta relativo se convierte en absoluto resolviéndolo con el directorio actual de la unidad nombrada por el nombre de ruta, si corresponde. Si no, se resuelve contra el directorio de usuario actual.

Ejemplo: 

Java

// Java Program illustrating the getAbsolutePath() Method
 
// Importing all input output classes
import java.io.*;
 
// Class to get getAbsolutePath
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating a file object where
        // relative path is provided as in parameter
        File path = new File("Notes/../demo.txt");
 
        // Print and display the string representing
        // absolute path of the file
        System.out.println("Output : "
                           + path.getAbsolutePath());
    }
}

Producción: 

3 . método getCanonicalPath()

Este método devuelve la string de nombre de ruta canónico del nombre de ruta abstracto dado. Un nombre de ruta canónico es absoluto y único. Este método primero convierte el nombre de ruta a forma absoluta si es necesario, como si invocara el método getAbsolutePath() , y luego lo asigna a su forma única de una manera dependiente del sistema.

Devuelve: La string canónica de la ruta de acceso que indica el mismo archivo o directorio que la ruta de acceso abstracta. 

Java

// Java Program illustrating the getCanonicalPath() method
 
// Importing all input output classes
import java.io.*;
 
// Class for showcasing getCanonicalPath method
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
        throws IOException
    {
        // Creating a new File object and
        // providing it relative path as in arguments
        File path = new File("Notes/../demo.txt");
 
        // Print an display the the canonical path
        // name string
        System.out.println("Output: "
                           + path.getCanonicalPath());
    }
}

Producción: 

Explicación de salidas: para interpretar mejor con estas salidas CMD o salidas codificadas, la ubicación especificada de los archivos java utilizados es la siguiente 

:C:\Users\ASPIRE\Desktop\Java\getPathExample or getAbsoltePathExample or getCanonicalPathExample

Ubicación del archivo demo.txt  

:C:\Users\ASPIRE\Desktop\Java\Notes\Chapter one\demo.txt

Ahora, después de discutir cada uno de ellos, profundicemos en las diferencias entre getPath() , getAbsolutePath() , getCanonicalPath() , que son las siguientes: 

               obtenerRuta()                                                                                obtenerRutaAbsoluta()                                                                                                                                       getCononicalPath()                         
Este método devuelve una string que indica la ruta (absoluta o relativa) del archivo representado por el objeto de archivo. Este método devuelve la string de nombre de ruta absoluto del nombre de ruta de archivo abstracto. Este método devuelve la string de nombre de ruta canónico del nombre de ruta abstracto dado.
Si el objeto de archivo se crea utilizando una ruta relativa, la ruta devuelta es una ruta relativa. Si la ruta de acceso abstracta es relativa, se resuelve de forma dependiente del sistema. Si el objeto de archivo se crea utilizando una ruta relativa, este método primero convierte el nombre de la ruta en absoluto y lo asigna a una forma única. 
Si el objeto de archivo se crea utilizando la ruta absoluta, la ruta devuelta es la ruta absoluta. Si el nombre de ruta abstracto ya es absoluto, se devuelve la misma string de nombre de ruta. Si el objeto de archivo se crea utilizando una ruta relativa, la ruta devuelta tendrá una forma única.
Este método no resuelve el nombre de ruta. Este método solo resuelve el directorio actual para una ruta relativa. Las representaciones abreviadas (como «.» y «..») no se resuelven más.                        Este método consiste en eliminar nombres redundantes como “.” y “..” del nombre de la ruta, resolviendo enlaces simbólicos (en la plataforma Unix) y convirtiendo las letras de unidad a un caso estándar (en la plataforma Microsoft Windows).

Ejemplo

En el sistema de la ventana

Ruta del archivo = nuevo archivo («Notas/../demo.txt»);  

Producción:

Notas\..\demo.txt

En el sistema de Unix

Ruta del archivo = nuevo archivo («Notas/../demo.txt»)

Producción:

Notas/../demo.txt

Ejemplo

Sistema de ventanas

Ruta del archivo = nuevo archivo («Notas/../demo.txt»);                    

Producción:

C:\Usuarios\ASPIRE\Desktop\Java\Notes\..\demo.txt  

En el sistema de Unix

Ruta del archivo = nuevo archivo («Notas/../demo.txt»)

Producción:

home/pooja/Escritorio/Notas/../demo.txt

Ejemplo

En el sistema de Windows

Ruta del archivo = nuevo archivo («Notas/../demo.txt»);

Producción:

C:\Usuarios\ASPIRE\Escritorio\Java\demo.txt

En el sistema de Unix

Ruta del archivo = nuevo archivo («Notas/../demo.txt»)

Producción:

/home/pooja/Escritorio/Java/demo.txt

Publicación traducida automáticamente

Artículo escrito por poojavichare1810 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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