0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java中如何获取文件的路径

Wildesbeast 来源:今日头条 作者:Java架构学习交流 2020-02-22 15:03 次阅读

1. 前言

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

2. 文件的路径

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

2.1 相对路径

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

2.2 绝对路径

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

2.3 路径速记符

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

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

Windows下基本将 / 改为 即可。

3. Java 中读取文件

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

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

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

3.1 getPath

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

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

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

3.2 getAbsolutePath

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

File file = new File("./app.yml");# absolutePath = /Users/dax/IdeaProjects/foo/./app.ymlSystem.out.println("absolutePath = " + absolutePath);

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

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

3.3 getCanonicalPath

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

File file = new File("./app.yml");# canonicalPath = /Users/dax/IdeaProjects/foo/app.ymlSystem.out.println("canonicalPath = " + file.getCanonicalPath());

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

规范路径(不包含速记符)对于一个固定位置的文件来说是唯一的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    52

    文章

    8232

    浏览量

    146282
  • JAVA
    +关注

    关注

    19

    文章

    2967

    浏览量

    104724
  • 代码
    +关注

    关注

    30

    文章

    4782

    浏览量

    68546
收藏 人收藏

    评论

    相关推荐

    请问JS api有获取文件列表的接口么?

    JS api的文件管理里面没有获取文件列表的接口么?java的有directory.listFiles(); ,nodejs的fs.readdir也是可以
    发表于 03-30 11:02

    一种获取关联程序启动路径的方法与实现

             本文介绍了安装可执行程序修改注册表建立文件关联链表的过程,提出了一种基于文件类型获取关联应用程序启动
    发表于 09-09 08:59 23次下载

    JAVA教程之列出目录下的文件

    JAVA教程之列出目录下的文件,很好的JAVA的资料,快来学习吧
    发表于 04-11 17:28 5次下载

    JAVA教程之复制文件

    JAVA教程之复制文件,很好的JAVA的资料,快来学习吧
    发表于 04-11 17:28 2次下载

    JAVA教程之用GZIP压缩解压文件

    JAVA教程之用GZIP压缩解压文件,很好的JAVA的资料,快来学习吧
    发表于 04-11 17:28 6次下载

    JAVA教程之压缩中文文件名的文件

    JAVA教程之压缩中文文件名的文件,很好的JAVA的资料,快来学习吧
    发表于 04-11 17:28 4次下载

    C#教程之获取目录word问文件列表

    C#教程之获取目录word问文件列表,很好的C#资料,快来学习吧。
    发表于 04-20 14:46 10次下载

    Java编程入门必须学习的10个技术点详细资料概述

     1Java 的运行 javac 编译java 文件为class 文件java 命令的使用, 带package 的
    发表于 10-16 15:50 0次下载

    Java编程入门必须学习那些10个知识点

    Java 的运行 知识点: javac 编译 java 文件为 class 文件java 命令的使用, 带 package 的
    发表于 04-24 08:00 1次下载
    <b class='flag-5'>Java</b>编程入门必须学习那些10个知识点

    JAVANIO通过MappedByteBuffer操作大文件

    java io操作通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio
    的头像 发表于 05-05 23:42 3495次阅读

    干货:总结Java创建文件的五种最佳实践方法(附源码)

    java中有很多的方法可以创建文件文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java创建
    的头像 发表于 08-28 11:29 6887次阅读
    干货:总结<b class='flag-5'>Java</b><b class='flag-5'>中</b>创建<b class='flag-5'>文件</b>的五种最佳实践方法(附源码)

    使用Python实现截取路径文件名的实例说明

    本文档的主要内容详细介绍的是使用Python实现截取路径文件名的实例说明免费下载。
    发表于 10-13 16:52 2次下载
    使用Python实现截取<b class='flag-5'>路径</b><b class='flag-5'>中</b>的<b class='flag-5'>文件</b>名的实例说明

    Python、PyQt如何从获取文件路径中提取文件路径

    。 解决办法:    使用self.openfile= QFileDialog.getOpenFileNames(),获取文件后,再使用os.path.dirname()从文件路径
    的头像 发表于 06-20 21:05 3615次阅读

    介绍在Linux获取文件完整路径的4种方法

    readlink 的最初用途是解析符号链接,不过我们可以用它来显示文件的完整路径,如下为其语法结构
    的头像 发表于 11-15 16:40 9878次阅读

    如何使用正确的文件路径分隔符

    主机操作系统上运行的路径。 在本文中,我们将了解如何编写代码来使用正确的文件路径分隔符。 2.文件分隔符 文件分隔符是用来分隔构成特定位置
    的头像 发表于 10-08 16:19 855次阅读