Java项目中有些信息(例如web的配置信息)可能要放在.properties文件中,那我们应该怎么来读取它们呢,下面给出一个工具类做一说明,并解决了中文乱码问题:
1、其中config.properties文件信息如下:
name=\u843D\u82B1\u6709\u610Fwang王
str=\u6D41\u6C34\u65E0\u60C5
boolean=true
2、PropertiesUtil工具类读取.properties文件
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
public class PropertiesUtil {
private static String default_properties = "config.properties";
private static Properties prop;
static {
prop = new Properties();
try {
InputStream is = new BufferedInputStream(new FileInputStream(getPath() + default_properties));
BufferedReader bf = new BufferedReader(new InputStreamReader(is,"UTF-8"));//解决读取properties文件中产生中文乱码的问题
prop.load(bf);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getProperty(String key) {
return prop.getProperty(key);
}
public static String getProperty(String key, String defaultValue) {
String value = prop.getProperty(key);
if (value == null)
return defaultValue;
return value;
}
public static boolean getBooleanProperty(String name, boolean defaultValue) {
String value = prop.getProperty(name);
if (value == null)
return defaultValue;
return (new Boolean(value)).booleanValue();
}
public static int getIntProperty(String name) {
return getIntProperty(name, 0);
}
public static int getIntProperty(String name, int defaultValue) {
String value = prop.getProperty(name);
if (value == null)
return defaultValue;
return (new Integer(value)).intValue();
}
public static String getPath() {
return Thread.currentThread().getContextClassLoader().getResource("").getPath();
}
/**
* 读取指定properties中的值
* @param properties 文件名
* @param name 要读取的属性
* @return
*/
private String readProper(String properties, String name) {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(properties);
Properties p = new Properties();
try {
p.load(inputStream);
} catch (IOException e1) {
e1.printStackTrace();
}
return p.getProperty(name);
}
public static void main(String[] args) {
PropertiesUtil propertiesUtil = new PropertiesUtil();
String name = PropertiesUtil.getProperty("name");
String str = propertiesUtil.readProper("config.properties","str");
Boolean bo = propertiesUtil.getBooleanProperty("boolean", false);
System.out.println("name=="+name+","+"str=="+str+", boolean == " +bo);
}
}
|