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

标签: java
4人阅读 评论(0) 收藏 举报
分类:

这三个方法的理解很容易混淆,总结一下自己对这个方法的区别,首先为了理解这几个方法的区别有必要了解一下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

Method Description
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
查看评论

File的getPath()和getAbsolutePath()和getCanonicalPath()的区别

这几个方法是有一次无意的发现,我d
  • u011310942
  • u011310942
  • 2014-09-19 13:48:19
  • 1673

java中file类的三种获取路径的方法getPath(),getAbsolutePath(),getCanonicalPath()的比较

最近在详读java核心技术卷1,发现许多不明白的地方,从今天开始在此记录下来,同时也帮助同学们更好的理解这本书:         今天遇到的问题是file类中三种获取路径的方法getPath(),ge...
  • qbw2010
  • qbw2010
  • 2015-03-23 09:23:18
  • 8683

File:getPath()&getAbsolutePath()&getCanonicalPath()

通过阅读API文档,下面是3个方法的讲解截图: getPath()&getAbsolutePath()的区别 getPath()得到的是构造file的时候的路径 getAbsolutePath(...
  • qq_17326933
  • qq_17326933
  • 2015-08-20 22:30:04
  • 775

java.io.File 的 getPath getAbsolutePath 和 getCanonicalPath 的不同

转自:http://www.blogjava.net/dreamstone/archive/2007/08/08/134968.html file的这几个取得path的方法各有不同,下边说说...
  • yasi_xi
  • yasi_xi
  • 2014-04-19 14:33:56
  • 1761

java文件操作getAbsolutePath和getCanonicalPath的区别

一般情况下,二者得到的结果是
  • Super_Ninja
  • Super_Ninja
  • 2014-11-03 14:11:52
  • 1289

java中getpath、getabsolutepath和getname

此前对file的操作有点模糊,今天clear一下。 public static voidtest1(){Filefile1=newFile(".\\test1.txt");Filefile2=new...
  • kunrenzhilu
  • kunrenzhilu
  • 2014-07-13 09:49:45
  • 1933

getPath()与getAbsolutePath()的区别

getPath()与getAbsolutePath()的区别public void diff_pathAndAbsolutePath(){ File file1 = new File(“.\...
  • a172131234
  • a172131234
  • 2015-10-07 14:43:37
  • 6521

File的getPath(),getAbsolutePath(),getCanonicalPath()区别

File file = new File("..//http_util.py"); System.out.println(file.getPath()); // 定义时的路径, 处理 // Syste...
  • github_17844375
  • github_17844375
  • 2014-08-08 17:11:26
  • 359

Java基础知识小结

  • 2013年02月27日 20:36
  • 527KB
  • 下载

File 类的 getPath()、getAbsolutePath()、getCanonicalPath() 的区别

考虑一下几种路径: C:\temp\file.txt - 绝对路径,也是规范路径 .\file.txt - 相对路径 C:\temp\myapp\bin\..\..\file.txt 这是一个绝对...
  • zsensei
  • zsensei
  • 2018-02-24 20:57:53
  • 21
    个人资料
    持之以恒
    等级:
    访问量: 8万+
    积分: 2058
    排名: 2万+
    最新评论