188 lines
3.6 KiB
Java
188 lines
3.6 KiB
Java
|
/**
|
||
|
* 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.*;
|
||
|
import org.csource.common.*;
|
||
|
|
||
|
/**
|
||
|
* ini file reader / parser
|
||
|
* @author Happy Fish / YuQing
|
||
|
* @version Version 1.0
|
||
|
*/
|
||
|
public class IniFileReader
|
||
|
{
|
||
|
private Hashtable paramTable;
|
||
|
private String conf_filename;
|
||
|
|
||
|
/**
|
||
|
* @param conf_filename config filename
|
||
|
*/
|
||
|
public IniFileReader(String conf_filename) throws FileNotFoundException, IOException
|
||
|
{
|
||
|
this.conf_filename = conf_filename;
|
||
|
loadFromFile(conf_filename);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* get the config filename
|
||
|
* @return config filename
|
||
|
*/
|
||
|
public String getConfFilename()
|
||
|
{
|
||
|
return this.conf_filename;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 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(String conf_filename) throws FileNotFoundException, IOException
|
||
|
{
|
||
|
FileReader fReader;
|
||
|
BufferedReader buffReader;
|
||
|
String line;
|
||
|
String[] parts;
|
||
|
String name;
|
||
|
String value;
|
||
|
Object obj;
|
||
|
ArrayList valueList;
|
||
|
|
||
|
fReader = new FileReader(conf_filename);
|
||
|
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();
|
||
|
}
|
||
|
}
|
||
|
}
|