最近在看tomcat源码

1、getPath():

返回定义时的路径,(就是你写什么路径,他就返回什么路径)

2、getAbsolutePath():

返回绝对路径,但不会处理“.”和“..”的情况

3、getCanonicalPath():

返回的是规范化的绝对路径,相当于将getAbsolutePath()中的“.”和“..”解析成对应的正确的路径

第一个例子:(使用:“.\\src\\test.txt”一个点路径)

File file = new File(".\\src\\test.txt");

 System.out.println(file.getPath());
 System.out.println(file.getAbsolutePath());
 System.out.println( file.getCanonicalPath());

结果:

.\src\test.txt
D:\workspace\java_io\.\src\test.txt
D:\workspace\java_io\src\test.txt

第二个例子:(使用:“..\\src\\test.txt”两个点路径)

 File file = new File("..\\src\\test.txt");

   System.out.println(file.getPath());
   System.out.println(file.getAbsolutePath());
   System.out.println( file.getCanonicalPath());

结果:

 ..\src\test.txt
 D:\workspace\java_io\..\src\test.txt
 D:\workspace\src\test.txt 注意这个结果的路径,与一个点时不一样;因为他解析了“.”和“..”的情况。

第三个例子:(使用:“D:\\test\\absoluteTest.txt”绝对路径)

 File file = new File("D:\\test\\absoluteTest.txt");

   System.out.println(file.getPath());
   System.out.println(file.getAbsolutePath());
   System.out.println(file.getCanonicalPath());

结果:

 D:\test\absoluteTest.txt
 D:\test\absoluteTest.txt
 D:\test\absoluteTest.txt

结论:

1、当输入为绝对路径时,返回的都是绝对路径。

2、当输入为相对路径时:

2.1、getPath()返回的是File构造方法里的路径,是什么就是什么,不增不减

2.2、getAbsolutePath()返回的其实是user.dir+getPath()的内容,从上面看:D:\workspace\java_io\.\src\test.txt,D:\workspace\java_io\..\src\test.txt,可以得出。

2.3、getCanonicalPath()返回的就是标准的将符号完全解析的路径

tomcat源码分析一之getCanonicalFile和getAbsolutePath的区别的更多相关文章

  1. tomcat源码分析(三)一次http请求的旅行-从Socket说起

    p { margin-bottom: 0.25cm; line-height: 120% } tomcat源码分析(三)一次http请求的旅行 在http请求旅行之前,我们先来准备下我们所需要的工具. ...

  2. [Tomcat 源码分析系列] (二) : Tomcat 启动脚本-catalina.bat

    概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 ca ...

  3. Tomcat源码分析

    前言: 本文是我阅读了TOMCAT源码后的一些心得. 主要是讲解TOMCAT的系统框架, 以及启动流程.若有错漏之处,敬请批评指教! 建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, ...

  4. Tomcat源码分析之—具体启动流程分析

    从Tomcat启动调用栈可知,Bootstrap类的main方法为整个Tomcat的入口,在init初始化Bootstrap类的时候为设置Catalina的工作路径也就是Catalina_HOME信息 ...

  5. Tomcat源码分析--转

    一.架构 下面谈谈我对Tomcat架构的理解 总体架构: 1.面向组件架构 2.基于JMX 3.事件侦听 1)面向组件架构 tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成 ...

  6. tomcat 源码分析

    Tomcat源码分析——Session管理分析(下)    Tomcat源码分析——Session管理分析(上)     Tomcat源码分析——请求原理分析(下)     Tomcat源码分析——请 ...

  7. Tomcat源码分析——Session管理分析(下)

    前言 在<TOMCAT源码分析——SESSION管理分析(上)>一文中我介绍了Session.Session管理器,还以StandardManager为例介绍了Session管理器的初始化 ...

  8. Tomcat源码分析——Session管理分析(上)

    前言 对于广大java开发者而已,对于J2EE规范中的Session应该并不陌生,我们可以使用Session管理用户的会话信息,最常见的就是拿Session用来存放用户登录.身份.权限及状态等信息.对 ...

  9. Tomcat源码分析——请求原理分析(下)

    前言 本文继续讲解TOMCAT的请求原理分析,建议朋友们阅读本文时首先阅读过<TOMCAT源码分析——请求原理分析(上)>和<TOMCAT源码分析——请求原理分析(中)>.在& ...

随机推荐

  1. AcWing 214. Devu和鲜花 (容斥)打卡

    Devu有N个盒子,第i个盒子中有AiAi枝花. 同一个盒子内的花颜色相同,不同盒子内的花颜色不同. Devu要从这些盒子中选出M枝花组成一束,求共有多少种方案. 若两束花每种颜色的花的数量都相同,则 ...

  2. python的OS模块生成100个txt文件

    #!/user/bin/env/python35 # -*-coding:utf-8-*- # author:Keekuun """ 问题:生成一个文件夹,文件夹下面生成 ...

  3. (转)使用OpenGL显示图像(四)运用投影与相机视角

    运用投影与相机视角 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/projection.html 在OpenG ...

  4. Arduino入门套件 Arduino UNO R3

    限时大抢购:原价5.6元超声波模块HC-SR04,现只需3元,亏本大甩卖,只赚人气,如需购买的客户请直接拍下以下链接3件=3元购买,备注超声波模块即可,每个客户ID每天仅限购一个.http://det ...

  5. Ubuntu安装可视化电脑配置视图工具neofetch

    安装步骤: sudo apt-get install software-properties-common python-software-propertiessudo add-apt-reposit ...

  6. 运维 06 vim与程序员

    vim与程序员   所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以 ...

  7. spark性能调优04-算子调优

    1.使用MapPartitions代替map 1.1 为什么要死使用MapPartitions代替map 普通的map,每条数据都会传入function中进行计算一次:而是用MapPartitions ...

  8. MySQL-技术专区-数据库权限管理

    前言 学习mysql数据库,对于它的权限的管理是关键的一环.所以,下面介绍的是MySQL权限的管理. MySQL权限表 MySQL数据库实际上是通过将用户写入mysql库中对应的权限表来控制访问权限的 ...

  9. Spring注解之@Component、@Controller、@Service、@Repository

    目录 1.使用这四个注解的前提 2.详解@Component 3. @Service("XXX")或者@Service(value = "XXX")情况 4.总 ...

  10. 解决.Net MVC 中出现 非介入式客户端验证规则中的验证类型名称必须唯一。下列验证类型出现重复: required 的bug

    最近在开动科技创新作品的开发,出现了一个让人很烦恼的错误,每次从浏览页跳转到编辑页时就会出现一下错误 非介入式客户端验证规则中的验证类型名称必须唯一.下列验证类型出现重复: required 上一下出 ...