package com;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.*;

/**
* properties文件读写工具
* Created by charlin on 2017/9/9.
*/
public class PropertiesUtil {

private static String fileName = "conf/messages.properties";
private static String configFilePath = null;
static {
try {
configFilePath = PropertiesUtil.class.getClassLoader().getResource(fileName).getPath();
configFilePath = java.net.URLDecoder.decode(configFilePath, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

/**
* 获得文件路径
* @param fileName
* @return
*/
public static String getFilePath(String fileName){
try {
configFilePath = PropertiesUtil.class.getClassLoader().getResource(fileName).getPath();
configFilePath = java.net.URLDecoder.decode(configFilePath, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return configFilePath;
}

/**
* 根据key获得值
* @param key
* @return
*/
public static String getValue(String key, String fileName){
String value = null;
try {
Properties properties = new Properties();
FileInputStream fis = new FileInputStream(getFilePath(fileName));
properties.load(fis);
if (fis != null) fis.close();
if(properties.containsKey(key)){
value = properties.getProperty(key).trim();
}
} catch (IOException e) {
e.printStackTrace();
}
return value;
}

/**
* 获得默认值
* @param key
* @return
*/
public static String getValue(String key){
return getValue(key, getFilePath(fileName));
}

/**
* 获得所有的key
* @param fileName
* @return
*/
public static List getKeyList(String fileName){
List list = new ArrayList();
try {
Properties properties = new Properties();
FileInputStream fis = new FileInputStream(getFilePath(fileName));
properties.load(fis);
if (fis != null) fis.close();
Set set = properties.keySet();
for(Iterator it = set.iterator(); it.hasNext();){
list.add(it.next());
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}

public static void main(String[] args) {
List list = getKeyList(fileName);
System.out.println("list:"+list);
}
}