程序员社区

Java IO教程 --- Java 文件路径、绝对路径和规范路径

今天我们将研究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 文件路径程序产生的输出。

file

输出是不言自明的。根据输出,使用规范路径最适合避免由于相对路径引起的任何问题。

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

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Java IO教程 --- Java 文件路径、绝对路径和规范路径

一个分享Java & Python知识的社区