我们往常进行文件的加载的时候 用到的都是  FileInputStream进行 文件的加载比如下面一个例子 :

InputStream in=FileInputStream("1.properties");

Properties p=new Properties() ;

p.load(int)  ;//加载输入流 获得键值对

p.getProperties(...) ;////

我们通常都是这样来加载配置文件 。我们知道 我们在使用 第三方提供的类的时候 第三方都是以 jar包的形式提供给我们,   并没有给我们提供源文件,提供的只是一个一个的.class字节码文件  。

我们可以通过Class Loader 来加载这个字节码文件,并且使用这个类 。这里我们就想了,那能不能用 Class Loader来加载 配置文件呢?答案是能 。我们在一些框架中,比如 struts

spring  hibernate 等框架中 都是通过类加载器来加载配置文件的 。

我们要使用 类加载器 首先就要获得ClassLoader对象 ,然后通过ClassLoader的getResourceAsStream获得输入流

看面一段代码  :

1、

InputStream in=主类名.class.getClassLoader().getResourceAsStream("me/test/1.txt");  //1.txt就在 classpath下

因为我们这里是获得了类加载器然后通过类加载器来加载文件,但是类加载器并不知道配置文件是放在哪个目录下的 ,所以我们要将完整的路径名填上

2、
  IputStream in=ReflectTest2.class.getResourceAsStream("1.txt") ;  //1.txt就在 classpath下

指定某个类来加载,因为1.txt就在classpath下,并且这个类知道他自己的路径所以不需要相对路径,直接写文件名即可 。

3、

InputStream in=ReflectTest2.class.getResourceAsStream("/me/config/config.properties") ;  //1.txt在 me.config包中

如果 1.txt 在classpath下 那么就直接写文件名就行了 ,但是 这个配置文件现在在另一个包中  ,所以我们要相对于根目录   。当然 这还可以改成"../config/cnfig.properties"

.表示当前目录  ..表示上级目录

Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .的更多相关文章

  1. Java中的Xml配置文件(新手)

    Java中的Xml配置文件,本文是转发转发转发!重要的事情说三遍 一:概念 1.XML  Extensible markup Language 可拓展标记语言 2.功能:存储数据(配置文件,在网络中传 ...

  2. JAVA中单例模式的几种实现方式

    1 线程不安全的实现方法 首先介绍java中最基本的单例模式实现方式,我们可以在一些初级的java书中看到.这种实现方法不是线程安全的,所以在项目实践中如果涉及到线程安全就不会使用这种方式.但是如果不 ...

  3. Java中HashMap遍历的两种方式

    Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...

  4. JAVA中集合输出的四种方式

    在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...

  5. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  6. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  7. XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

  8. XML解析——Java中XML的四种解析方式(转载 by 龍清扬)

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

  9. Java中XML的四种解析方式(二)

    三.JDOM解析 特征: 1.仅使用具体类,而不使用接口. 2.API大量使用了Collections类. import org.jdom2.Attribute; import org.jdom2.D ...

随机推荐

  1. PDO基础知识

    使用PDO之前首先开启PHP的PDO扩展,方法见百度. PDO连接数据库的方式有三种 1.通过参数的形式连接数据库 (推荐) //通过参数形式连接数据库 try{ $dsn = 'mysql:host ...

  2. Fedora19/18/17安装显卡驱动和无限网卡驱动

    一.安装nvidia显卡驱动 1. 切换到root用户          su - 2. 确定当前Linux内核及SELinux policy 是否为最新          yum update ke ...

  3. CSS3动画之百度钱包

    百度钱包的步骤:1.建一个盒子,里面放两个盒子,代表正反面,两个盒子叠一起,正面层次高2.当鼠标Hover时,正面盒子从0deg->-180deg,反面盒子从-180deg->0deg3. ...

  4. sqlserver 2000新建sysadmin角色

    新建登录:sp_addlogin 'netcafe','pubwin'  netcafe是用户名,pubwin是密码,下面是msdn官方格式: sp_addlogin [ @loginame = ] ...

  5. You and your research

    英文版http://www.cs.virginia.edu/~robins/YouAndYourResearch.html 视频版http://www.youtube.com/watch?v=a1zD ...

  6. 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】

    因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...

  7. Calendar中add函数和roll函数的用法及区别

    Calendar中add()和roll()函数的用法一.取某个时间点后的整点时刻.例如1984年7月7日15:23:05后的整点时刻即为1984-07-07 16:00:00.实现如下:Calenda ...

  8. zhihu spark集群,书籍,论文

    spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...

  9. 剑指offer-面试题14.调整数组顺序使奇数位于偶数的前面

    题目:输入一个整数数组,实现一个函数来调整该数组中的数字的顺序, 使得所有的奇数位于数组的前半部门,所有的偶数位于数组的后半部门. 这一题一看其实是很简单的,当然在不考虑效率的情况可以这样考虑 我们将 ...

  10. 【BZOJ1031】[JSOI2007]字符加密Cipher 后缀数组

    [BZOJ1031][JSOI2007]字符加密Cipher Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的 ...