本文记录的是如何获取资源文件的路径.

先看看我设置的文件目录结构,如下图所示:

___

Java Build Path的设置如下图所示, 主要看build project之后的文件输出目录:

___

在Java中有两种方式可以获取到文件的路径,通过下面的测试代码看看它们的不同:

1

2

3

4

5String resPath = this.getClass().getResource("").getPath();

System.out.println("resPath: " + resPath);

String resPath1 = this.getClass().getClassLoader().getResource("").getPath();

System.out.println("resPath1: " + resPath1);

控制台中输出结果如下:

1

2resPath: /Users/carya/dev/RwProperties/target/classes/edu/cugb/tester/

resPath1: /Users/carya/dev/RwProperties/target/classes/

从结果中可以看到,使用this.getClass().getResource()获得的是代码所在类编译成class文件之后输出文件所在目录位置,而this.getClass().getClassLoader().getResource()获得的是class loader所在路径,该函数查看Java doc解释如下:

Finds the resource with the given name. A resource is some data (images, audio, text, etc) that can be accessed by class code in a way that is independent of the location of the code. The name of a resource is a ‘/’-separated path name that identifies the resource.

This method will first search the parent class loader for the resource; if the parent is null the path of the class loader built-in to the virtual machine is searched. That failing, this method will invoke findResource(String) to find the resource.

使用this.getClass().getResource(String name)函数时,name参数可以使用文件的绝对路径,也可以使用相对路径,如下所示:

1

2

3

4

5String resPath2 = this.getClass().getResource("../../../jdbc.properties").getPath();

System.out.println("resPath2: " + resPath2);

String resPath3 = this.getClass().getResource("/hbm/setting.txt").getPath();

System.out.println("resPath3: " + resPath3);

上述事例控制台的输出是:

1

2resPath2: /Users/carya/dev/RwProperties/target/classes/jdbc.properties

resPath3: /Users/carya/dev/RwProperties/target/classes/hbm/setting.txt

而使用this.getClass().getClassLoader().getResource(String name)函数时,name参数则只能使用相对于class loader目录的路径,即相对路径,看下面的事例:

1

2

3

4

5String resPath4 = this.getClass().getClassLoader().getResource("./hbm/setting.txt").getPath();

System.out.println("resPath4: " + resPath4);

String resPath5 = this.getClass().getClassLoader().getResource("/hbm/setting.txt").getPath();

System.out.println("resPath5: " + resPath5);

控制台输出如下, resPath4使用的是相对路径,能够得到正确结果,而resPath5使用的是绝对路径,抛出Exception:

1

2

3

4resPath4: /Users/carya/dev/RwProperties/target/classes/hbm/setting.txt

Exception in thread "main" java.lang.NullPointerException

at edu.cugb.tester.PropertiesPath.getFilePath(PropertiesPath.java:39)

at edu.cugb.tester.PropertiesPath.main(PropertiesPath.java:54)

另外,Thread.currentThread().getContextClassLoader().getResource()也可以获取资源文件路径,在获取资源路径方面其使用与this.getClass().getClassLoader().getResource()相似:

1

2

3

4

5String resPath6 = Thread.currentThread().getContextClassLoader().getResource("").getPath();

System.out.println("resPath6: " + resPath6);

String resPath7 = Thread.currentThread().getContextClassLoader().getResource("./jdbc.properties").getPath();

System.out.println("resPath7: " + resPath7);

控制台的输出如下:

1

2resPath6: /Users/carya/dev/RwProperties/target/classes/

resPath7: /Users/carya/dev/RwProperties/target/classes/jdbc.properties

java获取文件夹 路径,Java获取文件的路径相关推荐

  1. java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...

    Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator// F ...

  2. android 获取文件夹下的所有文件

    昨天,在做工作时,需要遍历所有一个文件夹下的所有文件夹,当时自己也不知道怎么做,后来在网上搜索了一些资料,发现其实也很简单. 1.获取SD是否可以读写,如果可以,则传入文件的路径 /*读取输入的某个文 ...

  3. java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  4. Java io流---拷贝文件夹下的所有文件和目录

    Java io流-拷贝文件夹下的所有文件和目录 代码: package demo01;import java.io.*; import java.util.TreeMap;public class C ...

  5. java多线程 文件夹_Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合

    复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功 ...

  6. java 删除指定文件夹和下面所有文件_java——File IO流

    1.File(掌握) (1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件 (2)构造方法 A:File file = new File("e:demoa ...

  7. java 文件夹下的文件_java读取某个文件夹下的所有文件

    import java.io.FileNotFoundException; import java.io.IOException; import java.io.File; public class  ...

  8. 【java】删除文件夹及文件夹中的所有文件

    需求 删除指定文件夹及文件夹中的所有文件. 环境 JDK 1.8 代码示例 在JDK 8中,可以使用java.nio.file.Files和java.nio.file.Path类来删除一个文件夹及其中 ...

  9. java中如何删除文件或清除文件夹下的所有文件

    java中如何删除文件或清除文件夹下的所有文件呢?现实中如果一个java项目中涉及非常多的删除文件操作,我们最好单独写一个函数实现文件的删除操作,以下是函数的实现: // 删除文件 或者 清除文件夹下 ...

  10. java读取某个文件夹中的全部文件(包括子文件夹)

    主要思路 使用file.listFiles()函数可以获取到某文件夹下的所有文件信息,如果需要访问子文件夹下的文件,则需要对获取到的文件信息进行递归遍历,如果是目录则继续统计,如果是文件则加入文件列表 ...

最新文章

  1. tf.squeeze示例代码
  2. netstat/nmap/netcat用法
  3. oracle数据分布不均,oracle性能优化操作七:索引提高数据分布不均匀时查询效率...
  4. 求最大公约数——欧几里得算法(JAVA)
  5. python高手能做什么_python高手们、能不能给新手写点心得,迷茫过、好方法、过渡期等等...
  6. 20162303 实验五 网络编程与安全
  7. php 时间段 mysql 存储_php – 在MySQL解决方案中存储日期范围
  8. 老男孩linux高级架构 百度云盘下载
  9. 阅读underscore源码笔记
  10. linux命令 选项,不点之Linux命令、选项及文件概念
  11. Pandownload 下线了,我花了 30 分钟自己搭建了一个网盘...
  12. Java中.setvalue(-1)_Java State.setValue方法代碼示例
  13. asa 防火墙拦截了https_ASA防火墙设置URL过滤
  14. plt_iris Matplotlib画图参数 Numpy 莺尾花演示
  15. 成熟的B端产品经理,都有这个能力
  16. R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用anova函数进行方差分析通过p值确认指定连续变量和风险值HR之间是否存在非线性关系
  17. 《SQL145题》正式发布!
  18. 自学整理之HTML5常用标签和知识——小白篇
  19. 计组_定点数一位乘_布斯公式
  20. 信息技术优质课评价标准

热门文章

  1. java开发课程表_展示Java开发人员课程包
  2. java lambda循环_使用Java 8 Lambda简化嵌套循环
  3. jar 、war、ear_在命令行上操作JAR,WAR和EAR
  4. gradle ant_区分基于Ant目标的Gradle任务
  5. .net2.0 orm_Hibernate 4.3 ORM工具
  6. 适用于Java开发人员的Elasticsearch:Elasticsearch生态系统
  7. adf435编程_动态ADF列车:以编程方式添加列车停靠点
  8. ivy maven_将Maven与Ivy集成
  9. Spring Batch –使用JavaConfig替换XML作业配置
  10. 正确获取Java事件通知