0. Java中常用的路径

System.getProperty("user.dir")

构造:File(path)

构造:FileInputStream(path)

XXX.class.getResource.getPath()

XXX.class.getClassLoader.getResource.getPath()

(以下演示均为Windows系统)

相对路径:src/test/resources/test.txt

绝对路径:D:\glearning\my_opensource\somproject\src\main\resources\test\test.txt

“.”符号:java文件所在的当前目录(编译后是.class文件所在的当前目录)

“..”符号:java文件所在的上一级目录(编译后.class文件的上一级目录)

“/”符号:以/开头的,在URL类中表示项目的根路径(maven编译后就是target目录的位置)。

绝对路径是完整的路径名,不需要其他任何信息既可以定位自身表示的文件。相对路径名必须使用来自其他路径名的信息进行解释。

1. System.getProperty("user.dir")

表示当前的用户目录。即jvm的调用目录。

例如,在D盘根目录下(D:\)中有一个Example.java文件,命令行切换到D:\,然后javac编译,再"java Example"运行,此时,我们启动了一个jvm进程,那么这个jvm是在"D:"下被启动的,所以当前的user.dir就是这个D:\。

System.getProperty("user.dir")就是指:在哪个地方启动的jvm。

在IDE中(idea或eclipse),jvm都是在项目(idea是Module)的根目录下被启动的,

对于IDEA例如:某个类的位置:

这个类位于DemoProject下的Demo1模块中,打印出来的user.dir如下所示:

可以看到jvm是在当前模块下被启动的。

2. File(path) 与 FileInputStream(path)

FileInputStream与File使用的路径形式一样,两者都是从System.getProperty("user.dir")开始,寻找指定的文件或目录。path必须是相对于当前目录的根目录:

上面示例中的文件test.txt是在resource文件夹下,new File()中的路径初始位置在当前jvm被启动的目录下,idea中也就是当前模块的根目录下。

所以使用相对路径时,必须是从模块根路径出发。

3. XXX.class.getResource.getPath()

XXX.class.getResource获取的是一个URL对象。该URL对象的根目录默认是从编译后的.class文件所在的目录。

(1)而当传入一个""空字符串时, XXX.class.getResource.getPath("")获取的是该类编译后的class文件所在的目录:

可以理解为:getResource()获取的是.class文件的一个统一资源定位对象(URL),这个对象中保存了.class文件所在的位置信息。传入空字符串,就能获取当前.class文件所在的目录了。

完整目录路径协议:file:/D:/glearning/learn_project/DemoProject/target/classes/cn/gaojx/demo/path/

(2)当传入"/",XXX.class.getResource.getPath("/")获取的是该类编译后的class文件所在的根目录:

4. XXX.class.getClassLoader().getResource.getPath()

(1)XXX.class.getClassLoader().getResource("").getPath(),该方法获取的是XXX的类加载器所在的资源文件目录的根目录:

(2)而XXX.class.getClassLoader().getResource("/")是不存在的,返回一个空对象:

PS: 一直没有搞明白File是如何加载当前项目的根路径的,如果有大佬知道这一点,还望不吝赐教!

java中什么路径_Java中的路径问题相关推荐

  1. java获取子路径_Java中路径的获取

    1.Java中获取路径的方法:  Class_Name.class .getResource("")        //   Class_Name.class .getResour ...

  2. java读取文件 路径_Java中的获取文件的物理绝对路径,和读取文件

    获取文件的绝对路径,读取该文件 一.文件目录打印图 下面的文件目录图,是项目中文件的位置信息:下面的例子是按照这个图来演示的. . |-- java | |-- ibard | | |-- demo1 ...

  3. java资源文件路径_Java 中获取资源(文件)的路径问题总结

    Java 中获取资源(文件)的路径问题总结 首先,Java 中获取资源大体上可分为两种方式,基于 文件系统的 和 基于classpath的. 1. 基于文件系统的相对简单. 比如 构造一个File f ...

  4. java代码获取项路径_Java中获取各种路径的方法盘点

    Java代码中获取路径 假设当前项目路径为:D:/wunian/workspace/JavaProject,现在来分别获取此项目中的各种路径. 1.获取资源文件(.class文件)所在路径(四种方式) ...

  5. java 输出文件到mac路径_Java 中几种获取文件路径的方式

    原标题:Java 中几种获取文件路径的方式 1. 前言 Java开发中我们经常要获取文件的路径,比如读取配置文件等等.今天我们就关于文件的路径和如何读取文件简单地探讨一下. 2. 文件的路径 文件的路 ...

  6. 在java中图片路径_java中获取图片路径三中方法

    java中获取图片路径的方法 //获取路径三中方法 //+ f.getOriginalFilename(); //String filedir = Thread.currentThread().get ...

  7. java中file类_Java中file类

    File类的概述:File更应该叫做一个路径,文件路径或者文件夹路径 ,路径分为绝对路径和相对路径,绝对路径是一个固定的路径,从盘符开始,相对路径相对于某个位置,在eclipse下是指当前项目下,在d ...

  8. java中的文件_JAVA中文件的操作

    在java中,对文件(例如图片)进行操作,包括上传.修改.删除 一,文件上传 1.文件传到哪里,不仅可以保存在数据库中,也可以上传到远程服务器,文件保存的是文件的路径 2.文件上传都需要做什么?写那些 ...

  9. java 绝对路径_java 获取绝对路径

    1.利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir"));//use ...

  10. java 中的流_Java中的流(IO

    Java中的流(IO流. java.io包中定义了多个流类型(类或抽象类)来实现 输入 / 输出功能,可以从不同的角度对其进行分类: 按单位可分为: 字节流         (一个字节一个字节的读取) ...

最新文章

  1. Ubuntu 12.04安装firefox 26中的flash plugin方法
  2. WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类
  3. 常见的java内存溢出情况
  4. mysql 5.0 to mysql 5.1的BTREE索引问题
  5. 012_Comparable和Comparator实例
  6. C语言再学习 -- 三字母词(转)
  7. Exam化的软件项目管理
  8. Ubuntu 安装 python-opencv
  9. 【安全】This base cannot be created with PLA.
  10. 百亿美元合同告吹!微软“到嘴的鸭子”飞了
  11. 快速导入Maven依赖的方法
  12. Windows平台上实现P2P服务(一)
  13. 计算机配置动态硬盘,【转】基本磁盘动态磁盘GTP磁盘MBR磁盘RAID阵列磁盘的区别(一)...
  14. 数据通信与计算机网络实训报告,数据通信网络实训总结报告.doc
  15. 阿里巴巴使用的Rax源码
  16. 百度地图API获取公交路线及站点数据
  17. Kryo工具类 序列化和反序列化操作工具类KryoUtils
  18. 图书管理系统(简易版)
  19. 用微分和差分方程描述的因果LIT系统
  20. WebSocket报错:Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but

热门文章

  1. 基于Matlab使用 IMU、磁力计和高度计估计方向和高度(附源码)
  2. 如何学习一门新的编程语言
  3. 计算机二级考试office操作题11,【第十一套】计算机二级MS Office操作题
  4. 渐变的用法及案例实现
  5. 《侠盗猎车手-罪恶都市》秘籍
  6. Scratch的方向
  7. 与谷歌AI领军科学家一较高下的梦想如何反应了中国对科技突破的追求?
  8. 试看5分钟视频python_Python面试应急5分钟!
  9. Android应用测试总结
  10. OpenGL Glut 初学