org.csource.common.IniFileReader Maven / Gradle / Ivy
/**
* Copyright (C) 2008 Happy Fish / YuQing
*
* FastDFS Java Client may be copied only under the terms of the GNU Lesser
* General Public License (LGPL).
* Please visit the FastDFS Home Page http://www.csource.org/ for more detail.
**/
package org.csource.common;
import java.io.*;
import java.util.ArrayList;
import java.util.Hashtable;
/**
* ini file reader / parser
*
* @author Happy Fish / YuQing
* @version Version 1.0
*/
public class IniFileReader {
private Hashtable paramTable;
private InputStream configFile;
/**
* @param configFile config file
*/
public IniFileReader(InputStream configFile) throws IOException {
this.configFile = configFile;
loadFromFile(configFile);
}
/**
* get the config filename
*
* @return config filename
*/
public InputStream getConfFile() {
return this.configFile;
}
/**
* get string value from config file
*
* @param name item name in config file
* @return string value
*/
public String getStrValue(String name) {
Object obj;
obj = this.paramTable.get(name);
if (obj == null) {
return null;
}
if (obj instanceof String) {
return (String) obj;
}
return (String) ((ArrayList) obj).get(0);
}
/**
* get int value from config file
*
* @param name item name in config file
* @param default_value the default value
* @return int value
*/
public int getIntValue(String name, int default_value) {
String szValue = this.getStrValue(name);
if (szValue == null) {
return default_value;
}
return Integer.parseInt(szValue);
}
/**
* get boolean value from config file
*
* @param name item name in config file
* @param default_value the default value
* @return boolean value
*/
public boolean getBoolValue(String name, boolean default_value) {
String szValue = this.getStrValue(name);
if (szValue == null) {
return default_value;
}
return szValue.equalsIgnoreCase("yes") || szValue.equalsIgnoreCase("on") ||
szValue.equalsIgnoreCase("true") || szValue.equals("1");
}
/**
* get all values from config file
*
* @param name item name in config file
* @return string values (array)
*/
public String[] getValues(String name) {
Object obj;
String[] values;
obj = this.paramTable.get(name);
if (obj == null) {
return null;
}
if (obj instanceof String) {
values = new String[1];
values[0] = (String) obj;
return values;
}
Object[] objs = ((ArrayList) obj).toArray();
values = new String[objs.length];
System.arraycopy(objs, 0, values, 0, objs.length);
return values;
}
private void loadFromFile(InputStream configFile) throws IOException {
InputStreamReader fReader;
BufferedReader buffReader;
String line;
String[] parts;
String name;
String value;
Object obj;
ArrayList valueList;
fReader = new InputStreamReader(configFile);
buffReader = new BufferedReader(fReader);
this.paramTable = new Hashtable();
try {
while ((line = buffReader.readLine()) != null) {
line = line.trim();
if (line.length() == 0 || line.charAt(0) == '#') {
continue;
}
parts = line.split("=", 2);
if (parts.length != 2) {
continue;
}
name = parts[0].trim();
value = parts[1].trim();
obj = this.paramTable.get(name);
if (obj == null) {
this.paramTable.put(name, value);
} else if (obj instanceof String) {
valueList = new ArrayList();
valueList.add(obj);
valueList.add(value);
this.paramTable.put(name, valueList);
} else {
valueList = (ArrayList) obj;
valueList.add(value);
}
}
} finally {
fReader.close();
}
}
}