Java 文件路径、绝对路径和规范路径
今天我们将研究 Java 文件路径。Java 文件路径可以是抽象的、绝对的或规范的。
Java 文件路径
java.io.File
包含三种确定文件路径的方法,我们将在本教程中探讨它们。
getPath()
:此文件路径方法以字符串形式返回抽象路径名。如果使用字符串路径名创建 File对象,则它仅返回路径名参数。如果使用 URI 作为参数,则它会删除协议并返回文件名。getAbsolutePath()
:此文件路径方法返回文件的绝对路径。如果 File 是使用绝对路径名创建的,则它仅返回路径名。如果使用相对路径创建文件对象,则绝对路径名将以系统相关的方式解析。在 UNIX 系统上,通过根据当前用户目录解析相对路径名,使之成为绝对路径名。在 Microsoft Windows 系统上,通过根据路径名命名的驱动器的当前目录(如果有)解析相对路径名,使之成为绝对路径名;如果没有,则根据当前用户目录解析。[getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#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("/Users/pankaj/test.txt");
printPaths(file);
// relative path
file = new File("test.xsd");
printPaths(file);
// complex relative paths
file = new File("/Users/pankaj/../pankaj/test.txt");
printPaths(file);
// URI paths
file = new File(new URI("file:///Users/pankaj/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 文件路径程序产生的输出。输出是不言自明的。根据输出,使用规范路径最适合避免因相对路径而导致的任何问题。另外,请注意,java 文件路径方法不检查文件是否存在。它们只对创建 File 对象时使用的文件的路径名进行操作。这就是 java 中不同类型的文件路径的全部内容。
您可以从我们的GitHub 存储库中查看更多 Java IO 示例。