本文链接:https://blog.csdn.net/wh_19910525/article/details/9314675

File的这三个方法在api中都有说明,仅以程序为例说明。

package test;

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

public class TestFilePath {

public static void main(String[] args) {
  // TODO Auto-generated methodstub

System.out.println(System.getProperty("user.dir"));
  
  try {
   System.out.println("-----默认相对路径:取得路径不同------");
   File file1 =new File("..\\src\\test1.txt");
   System.out.println(file1.getPath());
   System.out.println(file1.getAbsolutePath());
   System.out.println(file1.getCanonicalPath());
   System.out.println("-----默认相对路径:取得路径不同------");
   File file =new File(".\\test1.txt");
   System.out.println(file.getPath());
   System.out.println(file.getAbsolutePath());
   System.out.println(file.getCanonicalPath());
   
   System.out.println("-----默认绝对路径:取得路径相同------");
   File file2 =new File("D:\\workspace\\test\\test1.txt");
   System.out.println(file2.getPath());
   System.out.println(file2.getAbsolutePath());
   System.out.println(file2.getCanonicalPath());
  } catch (IOException e) {
   // TODOAuto-generated catch block
   e.printStackTrace();
  }
 }

}

程序执行结果如下:

F:\eclipseworkspace\testejb
-----默认相对路径:取得路径不同------
..\src\test1.txt
F:\eclipseworkspace\testejb\..\src\test1.txt
F:\eclipseworkspace\src\test1.txt
-----默认相对路径:取得路径不同------
.\test1.txt
F:\eclipseworkspace\testejb\.\test1.txt
F:\eclipseworkspace\testejb\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
结论:

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

当输入为相对路径时:

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

getAbsolutePath()返回的其实是user.dir+getPath()的内容,从上面F:\eclipseworkspace\testejb、F:\eclipseworkspace\testejb\..\src\test1.txt、F:\eclipseworkspace\testejb\.\test1.txt可以得出。

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

————————————————
版权声明:本文为CSDN博主「wh_19910525」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wh_19910525/article/details/9314675

java里getPath、 getAbsolutePath、getCanonicalPath的区别的更多相关文章

  1. java中File类的getPath(),getAbsolutePath(),getCanonicalPath()区别

    File file = new File(".\\test.txt"); System.out.println(file.getPath()); System.out.printl ...

  2. file.getPath() getAbsolutePath() getCanonicalPath()区别

    package file; import java.io.File; import java.io.IOException; public class getFilePath { public sta ...

  3. java里字节与字符的区别

    当时学Java的时候没搞懂字节和字符的区别,今天看文件输入输出流的时候觉得是时候彻底把这两个概念弄懂. 首先得知道byte的概念和作用: byte即字节的意思,是java中的基本数据类型,用来申明字节 ...

  4. java里int和Integer什么区别

    Integer i=0; i是一个对象 int i=3; i是一个基础变量 Integer i=0; 这种写法如果没记错,在JAVA1.5之前是会报错的,自动的加解包是1.5的新特性 必须写成 Int ...

  5. File 类的 getPath()、getAbsolutePath()、getCanonicalPath() 的区别【转】

    File 类的 getPath().getAbsolutePath().getCanonicalPath() 的区别 感谢大佬:https://blog.csdn.net/zsensei/articl ...

  6. JAVA里的单引号和双引号及String和char的区别

    JAVA里的单引号和双引号及String和char的区别 单引号引的数据 是char类型的双引号引的数据 是String类型的单引号只能引一个字符而双引号可以引0个及其以上 ************* ...

  7. 小谈Java里的线程

    今天,我们来谈一谈Java里的线程. 一.进程与线程的基本概念 大家可能没听过线程这个概念,但是相信,用计算机的朋友都听过进程这个概念.打开电脑的任务管理器,我们就可以看到许多进程.它们主要分为三类, ...

  8. 转:Java中abstract和interface的区别

    转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...

  9. Java abstract class 和 interface 的区别

    Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...

随机推荐

  1. Spring Cloud Ribbon说明

    浅谈Spring Cloud Ribbon的原理 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Clo ...

  2. 1223: 输出汉诺塔问题的盘子移动步骤(Java)

    一.题目 http://acm.wust.edu.cn/problem.php?id=1223&soj=0 二.代码 import java.util.*; public class Main ...

  3. Python之字符与编码笔记

    概述 类型 str 字符串 bytes 字节 bytearray 字节数组 字符串编码架构 字符集:赋值一个编码到某个字符,以便在内存中表示 编码 Ecoding:转换字符到原始字节形式 解码 Dec ...

  4. ASP.NET Core 3.0 入门

    原文:ASP.NET Core 3.0 入门 课程简介 与2.x相比发生的一些变化,项目结构.Blazor.SignalR.gRPC等 课程预计结构 ASP.NET Core 3.0项目架构简介 AS ...

  5. siamese跟踪论文思考

    转载自:https://zhuanlan.zhihu.com/p/34222060 通过作者在专栏里面放的几张响应图我们可以看到:SiamFC并不能区分不同的物体,图片上所有具有语义信息的物体都会得到 ...

  6. java序列化和反序列化使用总结

    一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输 ...

  7. Image Processing and Analysis_15_Image Registration:Image registration methods a survey——2003

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  8. mount命令解析

    可以参考两位大神的理解 Linux mount 命令 Linux的mount命令详解

  9. JavaScript(js)概述

    一.特点: JavaScript和java并没有直接关系,就像雷锋与雷峰塔似的没有联系: js是面向对象的,是运行在浏览器端的编程语言: 主要解决的是前端与用户的交互问题,包括交互数据. 二.js引入 ...

  10. linux /etc/shadow文件详解

    struct spwd { char *sp_namp; /* user login name */ char *sp_pwdp; /* encrypted password */ long int ...