📜  JavagetPath() 和 getCononicalPath() 的区别(1)

📅  最后修改于: 2023-12-03 14:42:23.159000             🧑  作者: Mango

Java中getPath()和getCanonicalPath()的区别

在Java中,有两个方法可以用来获取文件或目录的路径名:getPath()和getCanonicalPath()。这两个方法的区别如下:

getPath()

getPath()是File类的一个方法,它返回的是文件或目录的路径名字符串。

File file = new File("D:/workspace/myproject/src/main/java/MyClass.java");
System.out.println(file.getPath()); // D:\workspace\myproject\src\main\java\MyClass.java
getCanonicalPath()

getCanonicalPath()同样是File类的一个方法,它返回的是文件或目录的绝对路径名字符串。与getPath()方法不同的是,getCanonicalPath()返回的是一个标准的、规范化后的路径名字符串,它采用的是操作系统的路径格式,且不会包含"."或".."等相对路径的符号。

File file = new File("D:/workspace/../workspace/myproject/src/main/java/MyClass.java");
System.out.println(file.getCanonicalPath()); // D:\workspace\myproject\src\main\java\MyClass.java

从上面的两个例子可以看出,getPath()方法返回的是原始的路径名字符串,而getCanonicalPath()方法返回的是规范化后的路径名字符串。

总结

路径名是与操作系统有关的概念,不同的操作系统可能会有不同的路径名格式。在Java中,getPath()和getCanonicalPath()提供了获取文件或目录路径名的方法,而它们的区别主要在于是否规范化路径名。

对于需要获取标准的、规范化的路径名字符串的场景,我们应该使用getCanonicalPath()方法;而在获取原始的路径名字符串时,getPath()方法则更加合适。