Diferencia entre getCanonicalPath() y getAbsolutePath() en Java

Los métodos getCanonicalPath() y getAbsolutePath() pertenecen a la clase java.io.File en Java. Y estos métodos se utilizan básicamente para obtener la ruta de un objeto de archivo en la estructura de directorios del sistema.  

AbsoluteFilePath es el nombre de ruta de un objeto de archivo 

  • Si creamos el objeto de archivo usando una ruta abstracta, entonces la ruta absoluta del archivo es la misma que la ruta abstracta del archivo.
  • Si creamos el objeto de archivo usando una ruta relativa, entonces la ruta absoluta del archivo es la ruta que obtenemos después de resolver la ruta relativa contra el directorio actual.

CanonicalFilePath es el nombre de ruta de un objeto de archivo 

  • Si creamos el objeto de archivo usando una ruta abstracta, la ruta del archivo canónico es la misma que la ruta del archivo abstracto
  • Si creamos el objeto de archivo usando una ruta relativa, la ruta del archivo canónico es la ruta que es tanto la ruta absoluta más corta como la ruta única.

Tomemos un ejemplo. Digamos que creamos un objeto de archivo usando la ruta » C:/carpeta1/carpeta2/carpeta3/archivo.txt «. Obviamente, la ruta mencionada es una ruta abstracta, por lo que la ruta absoluta del archivo, así como la ruta canónica del archivo, serán las mismas que las anteriores. 

Pero si la ruta del archivo mencionada durante la creación del objeto del archivo es como » C:/carpeta1/carpeta2/carpeta3/carpeta4/../../carpeta3/archivo.txt «, entonces la ruta absoluta del archivo será la misma que la ruta mencionada. , pero la ruta del archivo canónico será la ruta absoluta más corta, es decir, » C:/carpeta1/carpeta2/carpeta3/archivo.txt» .

Método 1: getAbsolutePath()

public String getAbsolutePath() 

Método 2: getCanonicalPath()

public String getCanonicalPath() throws IOException

Ejemplo:

Método 1: getAbsolutePath()

file.getAbsolutePath()    
// It returns absolute path of file object in system's directory structure

Método 2: getCanonicalPath()

file.getCanonicalPath()    
// It returns canonical path of file object in system's directory structure

Ejemplo 1:

Java

// Java Program to illustrate Difference Between
// getCanonicalPath() and getAbsolutePath()
 
// Importing input output classes
import java.io.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
        throws IOException
    {
 
        // Path of Test.txt is E:\workspace\gfg\Test.txt
        // Test.txt is created inside project directory,
 
        // Here project name is gfg
        File file1 = new File("Test.txt");
 
        // Getting th absolute path of the file
        // using getAbsolutePath() method
        System.out.println("Absolute Path: "
                           + file1.getAbsolutePath());
 
        // Getting the canonical path of the file
        // using getCanonicalPath() method
        System.out.println("Canonical Path: "
                           + file1.getCanonicalPath());
    }
}

Producción:

Absolute Path:E:\workspace\gfg\Test.txt
Canonical Path: E:\workspace\gfg\Test.txt

Explicación de la salida: aquí, dado que el objeto de archivo se ha creado con una ruta de archivo completa y abstracta, ambos métodos proporcionan la misma salida que hemos usado durante la creación del objeto de archivo.

Ejemplo 2:

Java

// Java Program to illustrate Difference Between
// getCanonicalPath() and getAbsolutePath()
 
// Importing input output classes
import java.io.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
        throws IOException
    {
 
        // Creating an object of File class where
        // Path of Test.txt is E:/workspace/gfg/Test.txt
        File file2 = new File(
            "e:\\workspace\\gfg\\..\\gfg\\Test.txt");
 
        // Getting the absolute path of file
        // using getAbsolutePath() method
        System.out.println("Absolute Path: "
                           + file2.getAbsolutePath());
 
        // Getting the canonical path of file
        // using getCanonicalPath() method
        System.out.println("Canonical Path: "
                           + file2.getCanonicalPath());
    }
}

Producción:

Absolute Path:e:\workspace_2021-Apr\gfg\..\gfg\Test.txt
Canonical Path: E:\workspace_2021-Apr\gfg\Test.txt

Explicación de salida:

Aquí el objeto de archivo se ha creado utilizando la ruta de archivo relativa, que básicamente apunta a E:/workspace/gfg/Test.txt. Entonces, al llamar a getAbsolutePath() , proporciona una ruta relativa que se mencionó durante la creación del objeto de archivo. Pero al llamar a getCanonicalPath() , proporciona una ruta abstracta o una ruta directa y convierte la letra de la unidad en un caso estándar.

Ejemplo 3:

Java

// Java Program to illustrate Difference Between
// getCanonicalPath() and getAbsolutePath()
 
// Importing input output classes
import java.io.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
        throws IOException
    {
 
        // Now creating File class object where
        // Path of Test.txt is E:/Test.txt
        // Current Directory: E:/workspace/gfg/src
        File file3 = new File("../../Test.txt");
 
        // Getting the absolute path of file
        // using getAbsolutePath()
        System.out.println("Absolute Path: "
                           + file3.getAbsolutePath());
 
        // Getting the canonical path of file
        // using getCanonicalPath()
        System.out.println("Canonical Path: "
                           + file3.getCanonicalPath());
    }
}

Producción:

Absolute Path: E:\workspace\gfg\..\..\Test.txt
Canonical Path: E:\Test.txt

Salida Explicación:

Aquí el objeto de archivo se ha creado con una ruta relativa completa. Y mientras llamamos a getAbsolutePath() , podemos ver cómo obtenemos la ruta, no en una ruta totalmente relativa sino en una ruta relativa parcial. Pero al llamar a getCanonicalPath() , podemos ver la ruta abstracta directa en el sistema de archivos.

Veamos las diferencias en forma tabular -:

  getCanonicalPath()  obtenerRutaAbsoluta()
1. Es un método Java presente en la clase de archivo java.io. Es un método Java presente en la clase de archivo java.io.
2.

Su sintaxis es -:

public String getCanonicalPath()
lanza IOException

Su sintaxis es -:

String pública getAbsolutePath()

3. No necesita ningún argumento. No necesita ningún argumento.
4. Devuelve la string canónica de nombre de ruta que indica el mismo archivo o directorio que este nombre de ruta abstracto. Devuelve una string que denota la string de nombre de ruta absoluto que indica el mismo archivo o directorio que este nombre de ruta abstracto.
5. Es compatible con Java 1.1 + Es compatible con Java 1.0 +

Publicación traducida automáticamente

Artículo escrito por samandal2021 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 *