0%

Java专题:文件路径相关方法对比

文件路径方法

常用的获取文件路径的方法有:

  • File.getPath()
  • File.getAbsolutePath()
  • File.getCanonicalPath()

相对路径 vs. 绝对路径

如果创建 File 对象时使用的是不包含“.”和“..”的绝对路径字符串表示,那么 3 个方法返回的路径都是相同的。

使用相对路径字符串表示创建的 File 对象,其起始路径跟工作目录有关。

差别

当使用相对路径的字符串表示创建 File 对象,3 个方法的返回值是有部分差异的,下面我们一一说明。

由于是相对路径,所以我们先假设工作目录为 C:/test。

普通相对路径

1
2
3
4
File file = new File("abc");
file.getPath(); // abc
file.getAbsolutePath(); // C:/test/abc
file.getCanonicalPath();// C:/test/abc

带“.”的相对路径

1
2
3
4
File file = new File(".");
file.getPath(); // .
file.getAbsolutePath(); // C:/test/.
file.getCanonicalPath(); // C:/test

带“..”的相对路径

1
2
3
4
File file = new File("..");
file.getPath(); // ..
file.getAbsolutePath(); // C:/test/..
file.getCanonicalPath(); // C:/

小结

  • File.getPath():返回 File 对象创建时使用的路径字符串。
  • File.getAbsolutePath():返回绝对路径字符串,但可能包含“.”或“..”。
  • File.getCanonicalPath():返回规范的绝对路径字符串,不会包含“.”和“..”。注意,会抛出 IOException。