Properties文件比Xml文件更加直观,就是简简单单的键值关系,解析起来也更加容易。
列举一个Properties文件(database.cfg.properties):
database_driver=com.mysql.jdbc.Driver
database_url=jdbc:mysql://192.168.1.4:3306/mec_javase_201810
database_user=root
database_password=zss222325
直接给出解析工具( PropertiesParser.java):
package com.mec.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class PropertiesParser {
private static final Map<String, String> keyValueMap;
static {
keyValueMap = new HashMap<>();
}
public static void loadProperties(String configFilePath) { //通过文件名称得到is再加载
InputStream is = PropertiesParser
.class.getResourceAsStream(configFilePath);
loadding(is);
}
public static void loadProperties(InputStream is) { //参数是is,直接加载
loadding(is);
}
public static void loadProperties(File file) { // 参数为File,同样先得到is,再加载
InputStream is;
try {
is = new FileInputStream(file);
loadding(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static void loadding(InputStream is) {
try {
InputStreamReader isr = new InputStreamReader(is, "utf-8"); //转化格式为utf-8
Properties properties = new Properties();
properties.load(isr);
Enumeration<Object> keys = properties.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value = properties.getProperty(key); // 取得properties文件内容放入Map中
keyValueMap.put(key, value);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static Set<String> getKeySet() { //得到键集合
return keyValueMap.keySet();
}
public static String value(String key) { //根据键取值
return keyValueMap.get(key);
}
}
有了这个工具,我们同样也可以把它打成包,以后使用就很方便了。
package com.mec.test;
import java.util.Iterator;
import java.util.Set;
import com.mec.util.PropertiesParser;
public class TestProperties {
public static void main(String[] args) {
PropertiesParser.loadProperties("/database.cfg.properties"); //直接运用工具
Set<String> keys = PropertiesParser.getKeySet();
Iterator<String> keySet = keys.iterator();
while(keySet.hasNext()) {
String key = keySet.next();
String value = PropertiesParser.value(key);
System.out.println(key + ":" + value);
}
}
}
结果:
database_user:root
database_url:jdbc:mysql://192.168.1.4:3306/mec_javase_201810
database_driver:com.mysql.jdbc.Driver
database_password:zss222325