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

时间:2020-02-23 14:36:33  来源:igfitidea点击:

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

Java文件路径

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

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

  • getAbsolutePath():此文件路径方法返回文件的绝对路径。
    如果使用绝对路径名创建File,则仅返回路径名;如果使用相对路径创建文件对象,则以系统相关的方式解析绝对路径名。
    在UNIX系统上,相对路径名通过对当前用户目录进行解析而被确定为绝对路径。
    如果不是,则针对当前用户目录进行解析。

  • getCanonicalPath():此路径方法返回绝对且唯一的规范路径名。
    该方法首先在必要时将此路径名转换为绝对形式,就像通过调用getAbsolutePath方法,然后以与系统有关的方式将其映射为其唯一形式。
    这通常涉及删除冗余名称,例如"。
    "。
    和" .."从路径名开始,解析符号链接(在UNIX平台上),并将驱动器号转换为标准大小写(在Microsoft Windows平台上)。

Java文件路径示例

让我们用一个简单的程序查看java中文件路径的不同情况。

package com.theitroad.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/hyman/test.txt");
		printPaths(file);
		//relative path
		file = new File("test.xsd");
		printPaths(file);
		//complex relative paths
		file = new File("/Users/hyman/../hyman/test.txt");
		printPaths(file);
		//URI paths
		file = new File(new URI("file:///Users/hyman/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对象时使用的文件路径名上工作。