【Java IO】File类的getPath, getAbsolutePath和getCanonicalPath的区别

本文详细解释了Java中File类的getPath(), getAbsolutePath()和getCanonicalPath()方法的区别,并通过实例展示了这些方法如何处理相对路径和绝对路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这三个方法的理解很容易混淆,总结一下自己对这个方法的区别,首先为了理解这几个方法的区别有必要了解一下File这个类,

File实例包含所代表的文件或者目录路径的信息,这个信息通常称之为抽象路径(Abstract Path).大家可能好奇了,为啥叫抽象路径,这里的主要原因是由于Java本身的跨平台特性,所以在路径表示的时候,路径信息并不应反映出具体对应的操作系统环境。

另外,这个抽象路径可以包含操作系统特有的前缀,比如:Linux/Unix类操作系统的”/”, 或者Windows操作系统的”\\”。

下面是一个简单的File实例:

File file1 = new File("C:\\workspace\\projectA\\pom.xml");

File file2 = new File("a.txt");

上面的file1实例所包含文件的抽象路径是: C:\\workspace\\projectA\\pom.xml,这里面的C:\是Windows的硬盘盘符,file2的抽象路径是a.txt

MethodDescription
getPath返回创建File实例给定路径的格式化后的字符串表示信息
getAbsolutePath返回当前File实例的绝对路径,如果创建当前File实例的抽象路径是绝对路径,则返回,否则会将当前的路径解析到绝对路径
getCanonicalPath返回File实例唯一的绝对路径,与getAbsolutePath不同之处在于,它会将‘..’或者‘.’这类路径解析好,返回从根路径到当前File实例的绝对路径,比如: 抽象路径是: “/root/sbin/../etc”,那么对应Canonical Path是:”/root/etc”

下面这个实例有助于理解他们的区别:

import java.io.File;
import java.io.IOException;

public class FilePathTest {
    public static void main(String[] args) throws IOException {
        File file1 = new File("C:/data/db/../a.tmp");
        //getPath会将抽象路径转化为当前运行环境操作系统对应的表达方式
        System.out.println("Path: " + file1.getPath());
        System.out.println("Absolute Path: " + file1.getAbsolutePath());
        System.out.println("Canonical Path: " + file1.getCanonicalPath());
    }
}

程序的结果是:

Path: C:\data\db\..\a.tmp
Absolute Path: C:\data\db\..\a.tmp
Canonical Path: C:\data\a.tmp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值