使用java读取properties配置文件

做项目的时候,经常会用到配置文件,因为很多情景下数据都是活的,而配置文件也可以根据情况随时修改,这里记录一下读取配置文件的方法以及获取指定名称的内容的方法,方便以后使用。 1、文件名称:webApp.properties,在src目录下,内容为:
package com.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public final class WebAppConfig { 
	/** 
     * 私有构造方法,不能创建对象 
     */ 
    private WebAppConfig() { 
    	
    } 
	/***
	 * 
	 * @param key:properties文件中各个选项的name值
	 * @return String:与name值对应的value值
	 */
	public static String app(String key){
		String value=null;
        if(key!=null && key.trim().length()>0){
        	Properties prop = new Properties(); 
            //读取指定的文件
        	InputStream in = WebAppConfig.class.getResourceAsStream("/webApp.properties"); 
            try { 
                prop.load(in); 
                value = prop.getProperty(key).trim(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            }
        }
        return value;
    }
	
	public static void main(String[] args){
		String savePath = app("businessFilePath");
		System.out.println(savePath);
	}
}
2、在别处进行调用:
/**
 * 该方法用来获取允许上传的文件大小
 * **/
public long getFileBuffer(){
	long buffer = 200*1024*1024;//文件上传允许最大为200M
	String fileSize = com.tzj.tsp.util.WebAppConfig.app("businessFileSize");
	if(fileSize!=null){//说明有设置值
		fileSize = fileSize.trim();
		//有设置值且是数字
		if(fileSize.length()>0 && isNumeric(fileSize)){
			buffer = Integer.parseInt(fileSize)*1024*1024;
		}
	}
	return buffer;
}
 3、可能遇到的问题:在使用类似的读取配置文件内容的功能时,可能会遇到: 在本类之中使用main方法调用没有问题,但是在别的类中却报“空指针异常”,无论这个类是是不是其子类、是不是与其处于同一个目录。 我当时碰到这个的时候,是因为这句代码:WebAppConfig.class.getResourceAsStream("/webApp.properties"),当时写的不是WebAppConfig.class,而是Object.class。 当使用”Object.class.getResourceAsStream("/webApp.properties");“去读取配置文件时,就会出现上面提到的情况,即本类中调用成功其他类中调用失败 改成”WebAppConfig.class.getResourceAsStream("/webApp.properties");“来加载配置文件,无论在哪里调用都没有问题。而这个WebAppConfig则是该java文件的名称。 所以,在读取配置的时候,使用"文件名称.class.getResourceAsStream("/webApp.properties")"来加载配置文件就能解决上面的问题啦。

猜你喜欢

转载自1017401036.iteye.com/blog/2312720