转载自http://blog.163.com/wb_zhaoyuwei/blog/static/183075439201261764454791/

当我们自己的程序需要处理配置文件时(比如xml文件或properties文件),通常会遇到两个问题:

  (1)我的配置文件应该放在哪里?

  (2)怎么我的配置文件找不到了?

对于第一个问题,答案是:请将你的资源文件放在classpath里,如果资源文件在jar中,请将该jar文件也加到classpath里面。

对于第二个问题,就得看你是使用的是哪个类(Class还是ClassLoader)来加载资源文件了,所以接下来分别讨论一下Class类和ClassLoader类对于资源文件的加载机制。

(一)用Class类加载资源文件

通过调用Class类的getResourceAsStream方法来加载资源文件:

通常用得较多的是JdbcUtil.class.getResourcrAsStream("/database.properties");

public InputStream getResourceAsStream(String pathToConfigFile);

该方法接收一个String类型的参数(pathToConfigFile)来表示资源文件的地址,如果加载成功,则返回该资源文件的输入流(InputStream),如果失败,则返回null。

重要的是,在传入pathToConfigFile参数时,有两种方式,

第一种方式为绝对定位方式,即pathToConfigFile以"/"开头,此时Java以classpath为根目录,直接加上pathToConfigFile来搜索资源文件。

第二种方式为相对定位方式,即pathToConfigFile不以"/"开头,此时资源文件的全路径应该为:调用getResourceAsStream方法的类的package路径加上pathToConfigFile。(在将package转为目录时将"."变成"/")

(二)用ClassLoader类加载资源文件

ClassLoader类也提供和Class类相同的加载方法:

public InputStream getResourceAsStream(String pathToConfigFile);

用ClassLoader加载配置文件时,pathToConfigFile均不能以"/"开头,在查找时直接在classpath下进行查找。Class类在查找资源文件时,也是代理(delegate)给ClassLoader完成查找功能的,请参考Java官方文档。

InputStream input = this.getClass().getClassLoader().getResourceAsStream("resources/config.properties");
 InputStream input = ClassLoader.getSystemResourceAsStream("resources/config.properties");
InputStream input = ClassLoader.getSystemClassLoader().getResourceAsStream("resources/config.properties");

转载于:https://www.cnblogs.com/shaoshanhuo/p/5117412.html

java加载配置文件相关推荐

  1. java加载配置文件_Java 读取配置文件的五种方式

    方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来. 因为是用ServletContext读取文件路径,所以配置文件可以放入在WEB-INF的clas ...

  2. java加载配置文件_java 读取和修改配置文件

    1.读取配置文件 try{ File f=new File("D:\\myfile.text"); Properties pp=new Properties(); FileInpu ...

  3. java动态加载配置文件

    最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...

  4. java配置文件工具类,java项目加载配置文件的工具类

    java项目加载配置文件的工具类 package com.loadproperties; import java.io.IOException; import java.io.InputStream; ...

  5. Java中加载配置文件方式的总结

    当需要在Java中加载配置文件的时候,有几个选项提供选择: ·        File ·        Class.getResourceAsStream ·        Class.getCla ...

  6. JDBC——jdbcUtils加载配置文件赋值

    加载配置文件:Properties对象 对应properties文件处理,开发中也使用Properties(唯一与流有关系的集合(是map),可以读取对象变为集合中Key/Value格式)对象进行.我 ...

  7. 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法

    小结: (1)在nutch中,一般通过ToolRunner来运行hadoop job,此方法可以方便的通过ToolRunner.run(Configuration conf,Tool tool,Str ...

  8. spring加载配置文件

    在项目中有些参数经常需要修改,或者后期可能会有改动时,那我们最好把这些参数放到properties文件中,在源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...

  9. spring-自动加载配置文件\使用属性文件注入

    在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到W ...

最新文章

  1. 【问题收录】Ubuntu Starting LightDM Display Manager fail
  2. java源文件到字节码的命令,Java的源代码文件的扩展名是 ,Java源文件通过编译命令编译成的字节码文件(平台无关)的扩展名是 。...
  3. 5.3.2 TCP连接管理
  4. 我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?
  5. flutter加载本地html标签,Flutter中如何加载并预览本地的html文件的方法
  6. unity的自带特性
  7. combobox DataGridView
  8. 推荐php 8新特性比较好的两个网站
  9. 干货|一文读懂阿里云数据库Autoscaling是如何工作的
  10. oracle 11g 存储结构和数据文件
  11. 第五:Python发送邮件时获取最新测试报告并发送邮件
  12. 计算机基础ppt_「考前秘笈」2020年3月份计算机二级MS-office考试重点
  13. uploadify php 重命名,自定义uploadify服务器端上传脚本
  14. Pyside2中嵌入Matplotlib的绘图并保存(指定Graphics View)
  15. 上海企业英语培训机构排名
  16. 通过代理下载Google Code
  17. 最小和最大优先循环队列(C++)
  18. 影响力在职场的重要性
  19. 变形金刚2 昨日上映 汽车人提前降临地球
  20. html去除图片链接边框及其链接虚线

热门文章

  1. 一个关于先验概率、似然函数与后验概率计算的小例子
  2. excel利用countif/match/lookup函数对比分析数据
  3. keyvaluepair_KeyValuePair用法(转)
  4. CSU 1203 Super-increasing sequence
  5. git - 基础 - 01 - git reset --hard 回滚以后,看不到之前的分支版本怎么解决:
  6. linux mpeg4ip 编译,CentOS6.2下编译mpeg4ip
  7. html ios导航栏下拉菜单,Flutter -- iOS导航栏TabBar
  8. java 全排列 可重复_java 用递归方法求n个数的无重复全排列
  9. 小米bl未解锁变砖了如何刷机_如何安装MIUI 10
  10. html瀑布流下拉刷新,瀑布流下拉刷新 - osc_1wnye1so的个人空间 - OSCHINA - 中文开源技术交流社区...