今天我们将研究Java文件路径。Java 文件路径可以是抽象的、绝对的或规范的。
Java 文件路径
java.io.File
包含三种确定文件路径的方法,我们将在本教程中探讨它们。
1、getPath():此文件路径方法以字符串形式返回抽象路径名。如果 String pathname 用于创建 File对象,则它只返回 pathname 参数。如果 URI 用作参数,则它删除协议并返回文件名。
2、getAbsolutePath(): 这个文件路径方法返回文件的绝对路径。如果 File 是用绝对路径名创建的,它只返回路径名。
如果文件对象是使用相对路径创建的,那么绝对路径名将以系统相关的方式解析。在 UNIX 系统上,相对路径名通过针对当前用户目录进行解析而成为绝对路径名。
在 Microsoft Windows 系统上,相对路径名通过针对由路径名命名的驱动器的当前目录(如果有)进行解析而成为绝对路径名;如果不是,则针对当前用户目录进行解析。
3、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中不同类型的文件路径。