XML和String數據替換 DataCache 02

private static Map> getProperties(
String path)
{
File file = new File(path);
logger.info("Properties directory is" + path);
// 讀出文件夾中的所有.properties文件
File[] subFiles = file.listFiles(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return name.indexOf(".properties") != -1;
}
});
// 讀文件器
FileReader freader = null;
String fileName = null;
String interfaceName = null;
// 初始化Hashtable的長度和properties文件個數一樣
Map<String, Hashtable<Object, Object>> allProperties = new Hashtable<String, Hashtable<Object, Object>>(
subFiles.length);
Hashtable<Object, Object> nameSpaceMap = null;
Hashtable<Object, Object> fieldXpathMap = null;
Hashtable<Object, Object> encryptXpathMap = null;
Hashtable<Object, Object> prefixXpathMap = null;

Properties prop = null;
String key = null;
// 遍歷已經過濾出來的.properties,存入Hashtable中
for (File subFile : subFiles)
{
logger.debug("Properties file is:" + subFile.getAbsolutePath());
prop = new Properties();
nameSpaceMap = new Hashtable<Object, Object>(2);
encryptXpathMap = new Hashtable<Object, Object>(2);
fieldXpathMap = new Hashtable<Object, Object>(20);
prefixXpathMap = new Hashtable<Object, Object>(2);
// 讀取文件名中的接口名
fileName = subFile.getName();
interfaceName = fileName.substring(0, fileName.indexOf("."));
logger.debug("interfaceName file is:" + interfaceName);
try
{
freader = new FileReader(subFile);
prop.load(freader);
for (Map.Entry<Object, Object> entry : prop.entrySet())
{
key = (String) entry.getKey();
if (key != null && key.startsWith("_namespace_"))
{
nameSpaceMap.put(key.substring(11), entry.getValue());
}
else if (key.startsWith("_encrypt_"))
{
encryptXpathMap.put(key.substring(9), entry.getValue());
}
else if (key.startsWith("_prefix_"))
{
prefixXpathMap.put(key.substring(8), entry.getValue());
}
else
{
fieldXpathMap.put(key, entry.getValue());
}
}
prop = null;
// 將正常的內容 加入allProperties Map中
allProperties.put(interfaceName, fieldXpathMap);
// 將帶有命名空間的內容加入allProperties Map中
allProperties.put(interfaceName + "namespace", nameSpaceMap);
// 帶有加密的內容加入allProperties Map中
allProperties.put(interfaceName + "encrypt", encryptXpathMap);
// 帶有前綴的內容(號碼之類)加入allProperties Map中
allProperties.put(interfaceName + "prefix", fieldXpathMap);
}
catch (Exception e)
{
logger.error("Close FileReader failure:" + e.getMessage());
}
finally
{
try
{
if (freader != null)
{
freader.close();
}
}
catch (Exception e2)
{
logger.error("Close FileReader failure:" + e2.getMessage());
}
}
}
return allProperties;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章