Java文件路径可以是抽象的,绝对的或规范的。

Java文件路径

java.io.File有三种确定文件路径的方法,我们将在本教程中探讨学习它们。

getPath() - 此文件路径方法将抽象路径名作为String返回。如果pathname用于创建File对象,则它只返回pathname参数。如果URI用作参数,则它将删除协议并返回文件名。

getAbsolutePath() - 此文件路径方法返回文件的绝对路径。如果使用绝对路径名创建File,则只返回路径名。如果使用相对路径创建文件对象,则以系统相关的方式解析绝对路径名。在UNIX系统上,通过将相对路径名解析为当前用户目录,使其成为绝对路径名。在Microsoft Windows系统上,通过将路径名解析为路径名所指定的驱动器的当前目录(如果有),使相对路径名成为绝对路径名; 如果没有,则针对当前用户目录解析。

getCanonicalPath() - 此路径方法返回绝对和唯一的规范路径名。如果需要,此方法首先将此路径名转换为绝对形式,就像调用getAbsolutePath()方法一样,然后以系统相关的方式将其映射到其唯一形式。这通常涉及从路径名中删除冗余名称,例如:.和..,解析符号链接(在UNIX平台上),以及将驱动器号转换为标准情况(在Microsoft Windows平台上)。

Java文件路径示例

下面通过使用简单的程序来了解java中文件路径的不同情况。

package com.journaldev.files;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class JavaFilePath {
public static void main(String[] args) throws IOException, URISyntaxException {
File file = new File("D:/users/maxsu/test.txt");
printPaths(file);
// relative path
file = new File("test.xsd");
printPaths(file);
// complex relative paths
file = new File("D:/users/maxsu/../pankaj/test.txt");
printPaths(file);
// URI paths
file = new File(new URI("file:///D:/users/maxsu/test.txt"));
printPaths(file);
}
private static void printPaths(File file) throws IOException {
System.out.println("Absolute Path: " + file.getAbsolutePath());
System.out.println("Canonical Path: " + file.getCanonicalPath());
System.out.println("Path: " + file.getPath());
}
}

根据上面程序的输出,使用规范路径最适合避免因相对路径而导致的任何问题。

另请注意,java文件路径方法不检查文件是否存在。它们只是处理创建File对象时使用的文件的路径名。