在讨论区别之前,我们快速回顾一下这三种方法:

  • getPath() 方法
  • getAbsolutePath() 方法
  • getCanonicalPath() 方法

1. getPath() 方法

getPath()是 URL 类的一种方法。它将给定的抽象路径名转换为路径名字符串。生成的字符串使用默认的名称分隔符来分隔名称序列中的名称。

返回:抽象路径名的字符串形式

示例:

// Java Program illustrating the getPath() method

// Importing input output classes
import java.io.*;

// Class for getPath method()
public class YiibaiDemo {

    // 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/Yiibai/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());
    }
}

2. getAbsolutePath() 方法

getAbsolutePath() 返回一个表示给定路径的绝对路径的路径对象。如果给定的路径名已经是绝对的,那么路径名字符串就像由 getPath() 方法返回一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该字符串由系统属性用户 .dir'() 命名。否则,将以与系统相关的方式解析此路径名。

返回:绝对路径名字符串,表示与此抽象路径名相同的文件或目录

在Unix的系统上:通过针对当前用户目录解析相对路径名来使其成为绝对路径名。
在 Microsoft 系统上:通过针对由路径名命名的驱动器的当前目录(如果有)解析相对路径名,使相对路径名成为绝对路径名。如果不是,则针对当前用户目录解析。

// Java Program illustrating the getAbsolutePath() Method

// Importing all input output classes
import java.io.*;

// Class to get getAbsolutePath
public class YiibaiDemo {

    // 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());
    }
}
  1. getCanonicalPath() 方法

此方法返回给定抽象路径名的规范路径名字符串。规范路径名既是绝对的,也是唯一的。如有必要,此方法首先将路径名转换为绝对形式,就像通过调用 getAbsolutePath() 方法一样,然后以依赖于系统的方式将其映射到其唯一形式。

返回:表示与抽象路径名相同的文件或目录的规范路径名字符串。

示例:

// Java Program illustrating the getCanonicalPath() method

// Importing all input output classes
import java.io.*;

// Class for showcasing getCanonicalPath method
public class YiibaiDemo {

    // 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 canonical path
        // name string
        System.out.println("Output: "+ path.getCanonicalPath());
    }
}

输出说明:为了更好地解释这些CMD输出或硬编码输出,使用的java文件的指定位置如下 -

C:/Users/ASPIRE/Desktop/JavagetPathExample or getAbsoltePathExample or getCanonicalPathExample

demo.txt文件的位置

C:/Users/ASPIRE/Desktop/JavaNotesChapter one/demo.txt

现在,在讨论了它们中的每一个之后,让我们深入了解getPath(),getAbsolutePath(),getCanonicalPath()之间的差异,如下所示:

getPath() getAbsolutePath() getCononicalPath()
此方法返回一个字符串,该字符串表示由文件对象表示的文件的(绝对或相对)路径名。 此方法返回抽象文件路径名的绝对路径名字符串。 此方法返回给定抽象路径名的规范路径名字符串。
如果文件对象是使用相对路径创建的,则返回的路径是相对路径。 如果抽象路径名是相对的,则以依赖于系统的方式解析它。 如果文件对象是使用相对路径创建的,则此方法首先将路径名转换为绝对路径名,并将其映射到唯一形式。
如果使用绝对路径创建文件对象,则返回的路径是绝对路径。 如果抽象路径名已经是绝对的,则返回相同的路径名字符串。 如果使用相对路径创建文件对象,则返回的路径将采用唯一形式。
此方法不解析路径名。 此方法仅解析相对路径的当前目录。速记表示形式(如“.”和“..”)不会进一步解析。 此方法涉及从路径名中删除多余的名称,如“.”和“..”,解析符号链接(在Unix平台上),以及将驱动器号转换为标准大小写(在Microsoft Windows平台上)。

Java中getPath()和getCononicalPath()之间的区别

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Java中getPath()和getCononicalPath()之间的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-getpath-and-getcononicalpath-in-java.html
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。