Sample in Github

1.一般使用Maven创建Java工程,代码文件在src/main/java文件夹中,资源文件在src/main/resources文件夹中,Java代码为什么可以读取到src/main/resources下的资源文件呢?

=> Maven会将Java工程编译到target文件夹下,/target/classes应该就是其根目录。编译后发现,.class文件就在这个文件夹下的对应子文件夹中,而src/main/resources下的文件被复制到了这个文件夹下。

2. src/test/java目录下的测试代码,又是如何读取resources的呢?

=> Maven会将src/test/java文件夹下的代码编译到target/test-classes文件夹下。同样的,如果src/test/resources下有资源文件的话,就复制到target/test-classes文件夹下。

测试代码运行时,优先使用test-classes文件夹下的资源文件,如果不存在,再使用classes文件夹下的资源文件。

  public void loadProperties1() throws IOException {
InputStream input = null;
// read from the root folder
input = this.getClass().getResourceAsStream("/config.properties"); // InputStream java.lang.Class.getResourceAsStream(String name)
// 1.首先,根据资源名称构造出一个绝对的资源路径
// 如果资源名称以'/'开头,资源的绝对名称就是'/'之后的名称部分
// 否则,就是modified_package_name/name
// modified_package_name就是这个类的包名,其中的'.'换为'/'
// 2.然后,查找资源的规则是由类的class loader实现的。
// 如果这个类是由bootstrap类加载器加载的话,就会用ClassLoader.getSystemResourceAsStream. printProperties(input);
} public void loadProperties2() throws IOException {
InputStream input = null; input = this.getClass().getClassLoader().getResourceAsStream("config2.properties");
// URL java.lang.ClassLoader.getResource(String name)
// 资源名就是由'/'分割的资源的路径名
// 首先查找父类加载器
// 如果父是null,就查找内置到VM中的该类加载器的路径
// 失败的话,调用 findResource(String) printProperties(input);
}

  

Java 如何读取resources的更多相关文章

  1. Java工程读取resources中资源文件路径问题

    正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径.在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例. 本地读取资 ...

  2. Java项目读取resources资源文件路径那点事

    今天在Java程序中读取resources资源下的文件,由于对Java结构了解不透彻,遇到很多坑.正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径, ...

  3. [Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  4. Maven项目读取resources下文件的路径问题(getClassLoader的作用)

    读取resources下文件的方法 网上有问答如下:问: new FileInputStream("src/main/resources/all.properties") new ...

  5. Maven获取resources的文件路径、读取resources的文件

    路径问题一切要看编译后的文件路径 比如,源文件路径是: 而编译后的文件路径为: 也就是说,resources文件夹下的文件在编译后,都是为根目录,这种情况下,比如我要读取resources 文件夹下的 ...

  6. Java方法读取文件内容

    一.针对文件内容的读取,在平时的工作中想必是避免不了的操作,现在我将自己如何用java方法读取文件中内容总结如下:废话不多说,直接上代码: 1 public static void main(Stri ...

  7. 五种方式让你在java中读取properties文件内容不再是难题

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  8. Java中读取文件

    Java中读取文件,去除一些分隔符,保存在多维数组里面 public void readFile(String filePath) { File file=new File(filePath); Ar ...

  9. Java InputStream读取网络响应Response数据的方法

    Java InputStream读取数据问题 原理讲解 1. 关于InputStream.read()     在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方 ...

随机推荐

  1. Shift Register

    /*************************************************** /  Shift Register module /  Programing by seong ...

  2. Angularjs学习笔记8_directive2

    指令难点在于参数 angular.module('app', []) .directive('myDirective', function() { return { restrict: String, ...

  3. Creating Dialogbased Windows Application (2) / 创建基于对话框的Windows应用程序(二)Button的应用、新建子窗体 / VC++, Windows

    创建基于对话框的Windows应用程序(二) —— Button的应用.新建子窗体 可以发现上一节创建的窗体中,点击OK和Cancel两个按钮是没有任何反应的.现在我们来为他们添加退出对话框的功能. ...

  4. deepin linux下python安装mysqldb

    ` sudo pip search MySQL-python `

  5. 敲敲SQL语句

    基本命令 查看数据库:show databases; 选择数据库:use mysql_crash; 连接数据库:需要:主机名,端口,合法用户名,用户口令 mysql -u ben -p -h loca ...

  6. 开源码应用之Eclipse篇

    开写这篇的时候,恰逢Eclpse Mars(4.5)正式公布,最终由日蚀变登火星了,也离我開始基于Eclipse开发产品已经过去10年,这10年间,经历了Eclipse由私有核心框架到拥抱OSGi, ...

  7. apple touch icon 大小总结

    <!-- For Chrome for Android: --> <link rel="icon" sizes="192x192" href= ...

  8. Eclipse 视图(View)

    Eclipse 视图 关于视图 Eclipse视图允许用户以图表形式更直观的查看项目的元数据. 例如,项目导航视图中显示的文件夹和文件图形表示在另外一个编辑窗口中相关的项目和属性视图. Eclipse ...

  9. python学习---简介

    http://www.cnblogs.com/wuguanglei/p/3866583.html http://www.cnblogs.com/wuguanglei/p/3866583.html ok ...

  10. GDB调试,转载一位大牛的东西

    http://www.wuzesheng.com/?p=1327 手把手教你玩转GDB(一)——牛刀小试:启动GDB开始调试 写在最前面:GDB是unix相关操作系统中C/C++程序开发必不可少的工具 ...