Java读取.properties文件 的四种方法
package com.gzqh.bbs.properties;import java.io.*;import java.util.Enumeration;import java.util.Properties;import java.util.PropertyResourceBundle;public class PropertiesLoader {/** * 读取属性文件的名称 * 最传统的方式 * 根据资源文件的名称,找到文件后,进行解析,装到Properties对象中,返回 * @param fileName java.util.Properties返回键值对的 * @return第一种方法 *///资源绑定,这种方式,把资源文件(command.properties)当成是一个java类文件来处理//1.编译这个文件,系统自动拷贝这个文件到class//2.所以这个文件在传递进行解析的时候,无需加后缀名字(properties)public java.util.Properties getPropertiesMethod1(String fileName)throws java.io.FileNotFoundException{//创建一个key\valueProperties类型的对象集合(Map接口的类,父类是Hashtable)Properties properties=new Properties();//资源绑定,JDK已经很早就提供了一个资源绑定类PropertyResourceBundle resourceBundle=null;resourceBundle=(PropertyResourceBundle)PropertyResourceBundle.getBundle(fileName);//要打开数据,讲数据放到properties对象中去//因为是JDK1.1就有的类,所以使用的还是枚举Enumeration enu=resourceBundle.getKeys();properties=new Properties();while(enu.hasMoreElements()){//获取当前的key的值String propertyName=enu.nextElement().toString();//将资源绑定中的信息,取出来再次进行绑定properties.setProperty(propertyName, resourceBundle.getString(propertyName));}return properties;}//测试第一种方法public void test1(PropertiesLoader p){String fileName="Command";//resourceBundle来读取的,这种是可以不用写.properties后缀的,并且db.properties文件,我们可以//当成一个java文件来看待,这个文件可以自动拷贝到java的class文件相对应的class文件相对应的目录下Properties properties;try {properties=p.getPropertiesMethod1(fileName);Enumeration enu=properties.keys();while(enu.hasMoreElements()){System.out.println(properties.getProperty(enu.nextElement().toString()));}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {PropertiesLoader p=new PropertiesLoader();//p.test1(p);p.test2(p);//p.test4(p);}/** * 第二种方法 * 文件需要放在工程根目录下面 * 文件需要后缀名 *///当成文件来处理,java.io.* 专门处理文件流public Properties getPropertiesMethod2(String propertiesName){Properties p=new Properties();try {//输入缓冲流InputStream in=new BufferedInputStream(new FileInputStream(propertiesName));p.load(in);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return p;}//测试第二种方法public void test2(PropertiesLoader p){String fileName="Command.properties";Properties properties;properties=p.getPropertiesMethod2(fileName);System.out.println(properties.getProperty("login"));}/** * 第四种方法 * 只会搜索本目录,所以必须放在同一包里 */public java.util.Properties getPropertiesMethod4(String fileName){InputStream in=this.getClass().getResourceAsStream(fileName);Properties p=new Properties();try {p.load(in);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return p;}public void test4(PropertiesLoader p){String fileName="Command.properties";Properties properties;properties=p.getPropertiesMethod4(fileName);System.out.println(properties.getProperty("login"));}}?