首页 课程 师资 教程 报名

Java file类获取路径有几种,你都知道吗

  • 2020-05-12 16:07:02
  • 8486次 动力节点

 Java开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。

Java file类获取路径有几种,你都知道吗

1.文件的路径

文件的路径通常有相对路径与绝对路径。

(1)相对路径

以当前文件为基准进行一级级目录指向被引用的资源文件。在Java代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读取到。

(2)绝对路径

文件在文件系统中真正存在的路径,是指从硬盘的根目录(Windows为盘符)开始,进行一级级目录指向文件(从根目录一层层读写)。绝对路径顾名思义就是绝对的地址,就像你只要告诉别人你家的门牌号,他就能找到你家。而不是相对位置你告诉他在老王家的隔壁一样。

(3)路径速记符

我们经常看到一些文件目录路径使用一些符号来简写,这里有必要总结一下(以类Unix系统为例):

标识符说明../表示当前文件所在的目录的上一级目录./表示当前文件所在的目录/表示根目录~当前用户目录,mac下为/Users/username,而win10下为c:\users\username

Windows下基本将/改为即可。

2.Java中读取文件

我们先来声明一个测试路径:

  • foo
  • |_src
  • ||_Test.java
  • ||_app.yml

其中Test.java用来编写读取app.yml文件的逻辑。Java中通过java.io.File来进行文件操作。并且提供了以下三个方法来获取文件的路径。

(1)getPath

该方法返回文件抽象路径名的字符串形式。实际上就是传递给File构造函数的路径名。

因此,如果File对象是使用相对路径创建的,则返回的值也将是相对路径。如果是绝对路径就返回绝对路径。

Filefile=newFile("./app.yml");
#输出path=./app.yml
System.out.println("path="+file.getPath());
#如果为绝对路径
Filefile=newFile("/Users/dax/IdeaProjects/foo/src/app.yml");
#输出path=path=/Users/dax/IdeaProjects/foo/src/app.yml
System.out.println("path="+file.getPath());

(2)getAbsolutePath

该方法返回文件的绝对路径。请注意!这里是有大坑的。如果你的文件在Java工程内,路径是按照编译后的路径计算的。

Filefile=newFile("./app.yml");
#absolutePath=/Users/dax/IdeaProjects/foo/./app.yml
System.out.println("absolutePath="+absolutePath);

同时我们发现该方法只解析当前目录(上面代码所在的目录)的相对路径,如果初始化中的路径包含了2.3章节中的速记符,速记符将不会被解析。

因为速记符的存在,一个文件在文件系统中的绝对路径可以有很多个。

(3)getCanonicalPath

速记符不被解析有时候是很痛苦的事,我们可能需要知道具体的路径。getCanonicalPath()方法解决了这个问题。

Filefile=newFile("./app.yml");
#canonicalPath=/Users/dax/IdeaProjects/foo/app.yml
System.out.println("canonicalPath="+file.getCanonicalPath());

由于getCanonicalPath()读取的是文件系统,因此会降低性能。如果我们确定没有使用速记符,并且驱动器号大小写已标准化(如果使用WindowsOS),我们应该首选使用getAbsoultePath(),除非你的项目中必须使用getCanonicalPath()。

Java file类获取路径有几种,你都知道吗

以上就是动力节点java培训机构的小编针对“Java file类获取路径有几种,你都知道吗”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交