Code Bye

如何一次性将整个properties文件里面的内容读取出来

如何一次性将整个properties文件里面的配置内容读取出来,现在我想到的就是直接读取文件的方式,但是这种方式读取的效率不行吧,求大神解答。。。(分数不多,谅解)


5分
package com.mkyong.properties;
 
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
 
public class App {
  public static void main(String[] args) {
 
	Properties prop = new Properties();
	InputStream input = null;
 
	try {
 
		input = new FileInputStream("config.properties");
 
		// load a properties file
		prop.load(input);
 
		// get the property value and print it out
		System.out.println(prop.getProperty("database"));
		System.out.println(prop.getProperty("dbuser"));
		System.out.println(prop.getProperty("dbpassword"));
 
	} catch (IOException ex) {
		ex.printStackTrace();
	} finally {
		if (input != null) {
			try {
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
 
  }
}

5分
Properties本身就是个Hashtable,可以像HashMap那样遍历出来。 
@lds1ove 对于您的代码来说需要知道整个properties文件中的key值,现在就是不想把所有的key都列出来。。。@rmn190 您好,能说的清晰一些吗?
引用 3 楼 oyh1203 的回复:

@lds1ove 对于您的代码来说需要知道整个properties文件中的key值,现在就是不想把所有的key都列出来。。。@rmn190 您好,能说的清晰一些吗?

一个properties文件才多大点,全部读出来放内存里多好。


5分
想这样,就不要弄成properties文件啊,直接xml,读取整个xml,转成map或json,想怎么玩怎么玩
api本身提供了keys和keyset方法。
package com.ssh.util;

import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class ProperUtil {
	private static final String fileName = "/com/ssh/config/properties/system.properties";
	private static Properties proper = new Properties();
	static{
		try {
			proper.load(ProperUtil.class.getResourceAsStream(fileName));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static String getStringValue(String  key,String defultValue){
		String value = proper.getProperty(key);
		if(HelpUtil.checkEmpty(value)){
			return defultValue;
		}
		return value;
	}

	public static boolean getBooleanValue(String key,boolean defultValue){
		String value = proper.getProperty(key);
		if(HelpUtil.checkEmpty(value)){
			return defultValue;
		}
		return Boolean.parseBoolean(value);
	}

	public static Integer getIntegerValue(String key,Integer defultValue){
		String value = proper.getProperty(key);
		if(HelpUtil.checkEmpty(value)){
			return defultValue;
		}
		return Integer.parseInt(value);
	}
	/**
	 * 读取所有的配置文件信息
	 * */
	public static Map<String, String> getAllProperties(){
		Map<String, String> map = new HashMap<String, String>();
		Enumeration en = proper.propertyNames();
		String key  = "";
		String value = "";
		while(en.hasMoreElements()){
			key = (String)en.nextElement();
			value = proper.getProperty(key);
			map.put(key, value);
		}
		return map;
	}


}

这样可以一次性取到整个properties文件的配置


5分
楼上已经给出代码了,如果楼主觉得想要更强大功能可以采用apache-commons-configuration;支持getInt等类型的获取
进入http://commons.apache.org/下载

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何一次性将整个properties文件里面的内容读取出来