File file = new File(".\\test.txt");

// 返回构造File对象时的路径
// 因此,如果File对象是使用相对路径创建的,则返回的值也将是相对路径。如果是绝对路径就返回绝对路径。
System.out.println(file.getPath());

// 该方法返回文件的绝对路径。请注意!这里是有大坑的。如果你的文件在Java工程内,路径是按照编译后的路径计算的。
// 该方法只解析当前目录(代码所在的目录)的相对路径,如果初始化中的路径包含了速记符,速记符将不会被解析。
System.out.println(file.getAbsolutePath());

// 速记符不被解析有时候是很痛苦的事,我们可能需要知道具体的路径。getCanonicalPath()方法解决了这个问题。由于getCanonicalPath()读取的是文件系统,因此会降低性能。
// 如果我们确定没有使用速记符,并且驱动器号大小写已标准化(如果使用Windows OS),我们应该首选使用getAbsoultePath(),除非你的项目中必须使用getCanonicalPath()。
System.out.println(file.getCanonicalPath());

输出

.\test.txt
E:\workspace\Test\.\test.txt
E:\workspace\Test\test.txt