我们往常进行文件的加载的时候 用到的都是  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. iOS UIWebView 访问https 绕过证书验证的方法

    在文件开始实现  allowsAnyHTTPSCertificateForHost 方法 @implementation NSURLRequest (NSURLRequestWithIgnoreSSL ...

  2. java zip工具类

    依赖jar :apache-ant-1.9.2-bin.zip import java.io.File; import java.io.FileInputStream; import java.io. ...

  3. 安装setuptools和pip

    什么是setuptool和pip python的强大在于它有许许多多的包,当我们要用到这些包时,一个一个的从官网下载安装就太麻烦了,setuptools和pip就提供了下载安装第三方包的功能.pip是 ...

  4. linux的一点一滴---open

    open函数用于打开和创建一个文件. 所需头文件: #include<sys/types.h> #include <sys/stat.h> #include <fcntl ...

  5. MERGE_SORT归并排序C++实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下实现归并排序,第一部分含有哨兵(算法来自<算法导论>),第二部分不含哨兵 第一部分 ...

  6. Keil中如何消除UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS警告

    在Keil C中,如果没有显式调用到定义过的函数,就会出现这样的的警告.当出现这样的警告时,可以不用管,因为不影响其它部分.但是,我们知道,即使没有调用这个函数,Keil仍然把它编译连接进整个程序,不 ...

  7. C# 将字节流转换为图片的实例方法

    usingSystem;  usingSystem.Collections.Generic;  usingSystem.Linq;  usingSystem.Text;  usingSystem.Dr ...

  8. Linux下GDB调试C/C++

    首先先编译程序并生成调试符号: gcc -g -c main.cpp gcc -o exefile main.o 以上的exefile为可执行程序的文件名 然后: gdb exefile 可以开始gd ...

  9. web api\ protobuf \formatter

    9:50:20吴X2014/11/7 9:50:20 9:55:14吴X2014/11/7 9:55:14webapi实现protobuf吴X2014/11/7 9:56:29http://www.s ...

  10. Combination Sum II 解答

    Question Given a collection of candidate numbers (C) and a target number (T), find all unique combin ...