在实际项目中,我们有许多信息时需要配置在配置文件中,那么用java代码获取项目或者本地的配置就显得尤为重要,这里是基于eclipse写的代码,为避免在实际项目中会出现乱码,所以在本地创建配置文件时要设置文件编码为UTF-8,如果是项目中配置信息,则同样需要设置编码为UTF-8。
package com.cn.test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** * @author feifz:
* @date :2017年7月28日 下午3:51:05
* @return
* @desc 注意:
* 不管该system-config.properties文件是在项目中还是在本地计算机上,
* 文件保存格式要保存为UTF-8格式,要不然获取到的信息会乱码
*/
public class GetConfigUtil {
private static final Logger logger = LoggerFactory.getLogger(GetConfigUtil.class);
public static void main(String[] args) {
String name1 = getLocalConfig("name");
System.out.println(name1);
String name2 = getProjectConfig("name");
System.out.println(name2);
String name3 = getProjectConfigLoad("name");
System.out.println(name3);
}
/**
* 获取项目路径下的配置文件
* 这里要注意几个事项:
* getResourceAsStream获取配置信息
* Class.getResourceAsStream(String path) :
* path 不以'/'开头时默认是从此类所在的包下取资源,以'/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
* GetConfigUtil.class.getResourceAsStream("system-config.properties") 获取跟该class文件统计目录下的文件
* GetConfigUtil.class.getResourceAsStream("/system-config.properties") 获取classPath根目录下获取
* GetConfigUtil.class.getResourceAsStream("/com/cn/system-config.properties") 根据路径直接获取
* @param key
* @return
*/
public static String getProjectConfig(String key){
Properties pros = new Properties();
String value = "";
try {
pros.load(new InputStreamReader(GetConfigUtil.class.getResourceAsStream("/system-config.properties"), "UTF-8"));
value = pros.getProperty(key);
} catch (Exception e) {
logger.error("Exception:",e);
}
return value;
}
/**
* 获取项目路径下配置文件
* 注意事项:
* Class.getClassLoader.getResourceAsStream(String path) :
* 默认则是从ClassPath根下获取,path不能以'/'开头,最终是由ClassLoader获取资源。
* @param key
* @return
*/
public static String getProjectConfigLoad(String key){
Properties pros = new Properties();
String value = "";
try {
pros.load(new InputStreamReader(GetConfigUtil.class.getClassLoader().getResourceAsStream("system-config.properties"), "UTF-8"));
value = pros.getProperty(key);
} catch (Exception e) {
logger.error("Exception:",e);
}
return value;
}
/**getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,
* 但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
* 从本地电脑文件获取信息
* 注意路径间是"\\"或者FileInputStream("E:/system-config.properties")
* @param key
* @return
*/
public static String getLocalConfig(String key) {
Properties pros = new Properties();
String value = "";
try {
InputStream inStream=new FileInputStream("E:\\system-config.properties");
// pros.load(new InputStreamReader(GetConfigUtil.class.getResourceAsStream("/system-config.properties"), "UTF-8"));
pros.load(new InputStreamReader(inStream,"UTF-8"));
value = pros.getProperty(key);
} catch (IOException e) {
logger.error("Exception",e);
}
return value;
}
}