Java 文件路径、绝对路径和规范路径

今天我们将研究Java文件路径。Java文件路径可以是抽象的、绝对的或规范的。

Java文件路径

java.io.File 包含三种方法来确定文件路径,我们将在本教程中探讨它们。

  1. getPath():这个文件路径方法返回抽象路径名作为字符串。如果字符串路径名用于创建文件对象,则简单地返回路径名参数。如果使用URI作为参数,则移除协议并返回文件名。
  2. getAbsolutePath():这个文件路径方法返回文件的绝对路径。如果使用绝对路径名创建文件,则简单地返回路径名。如果文件对象是使用相对路径创建的,则绝对路径名会以系统相关的方式解析。在UNIX系统上,相对路径名会根据当前用户目录解析为绝对路径名。在Microsoft Windows系统上,相对路径名会根据路径名所指示的驱动器的当前目录解析为绝对路径名;如果没有,则会根据当前用户目录解析。
  3. [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);
		// 相对路径
		file = new File("test.xsd");
		printPaths(file);
		// 复杂的相对路径
		file = new File("/Users/pankaj/../pankaj/test.txt");
		printPaths(file);
		// URI路径
		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示例。

Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical