直接上代碼說明,例如
mReader = new IniReader("/data/app/xxx.ini");
wifiSSID = mReader.getValueStr(SECTION, "ssid");
IniReader類:
public class IniReader implements Serializable {
/** 配置文件 */
private HashMapiniItem = new HashMap();
/** 配置文件中對應(yīng)的模塊名,如[Comunication] */
private transient String mSectionName;
/** 每個模塊中所對應(yīng)的屬性 */
private transient Properties mProperties; // properties配置文件
public IniReader(String filename) throws IOException {
FileReader fReader = new FileReader(filename);
BufferedReader reader = new BufferedReader(fReader);
read(reader);
reader.close();
fReader.close();
Log.e("iniReader", "iniReader class");
}
protected void read(BufferedReader reader) throws IOException {
String line;
while ((line = reader.readLine()) != null) {
parseLine(line);
}
}
/**
* 解析從配置文件中讀取到的每一行
*
* @param propertiLine
*? ? ? ? ? ? 從配置文件中讀取到的屬性值
*/
private void parseLine(String propertiLine) {
propertiLine = propertiLine.trim();
Log.e("iniReader", "iniReader parseLine1:"+propertiLine+"teshu:");
/** 配對模塊名 Eg:[Version]*/
//正則表達式受*.ini文件影響榴啸?
//有時候propertiLine.matches("\\[.*\\]")可行呜象,有時候 propertiLine.matches("\\[.*?\\]")可行
//有此bug膳凝,就暫時這樣使用,后續(xù)改進
if (/*propertiLine.matches("\\[.*\\]")*/propertiLine.contains("[fact_down]")) {
//mSectionName = propertiLine.replaceFirst("\\[(.*)\\]", "$1");
mSectionName = "fact_down";
mProperties = new Properties();
iniItem.put(mSectionName, mProperties);
Log.e("iniReader", "iniReader parseLine2 mSectionName:"+mSectionName);
} else if (propertiLine.matches(".*=.*")) {
/** 配對屬性值 */
Log.e("iniReader", "iniReader parseLine3");
if (mProperties != null)
{
int i = propertiLine.indexOf('=');
/** 取得屬性名稱 */
String name = propertiLine.substring(0, i).toLowerCase();
/** 取得屬性值 */
String value = propertiLine.substring(i + 1);
mProperties.setProperty(name, value);
System.out.println("name:"+name+"? value"+value);
}
}
}
/**
*
* @param section
*? ? ? ? ? ? 配置文件中模塊名
* @param name
*? ? ? ? ? ? 對應(yīng)模塊中的屬性名稱
* @return true表示有對應(yīng)的測試項,false表示沒有對應(yīng)的測試項
*/
public boolean getValue(String section, String name) {
boolean ret = false;
Properties p = (Properties) iniItem.get(section);
/**如果沒有設(shè)置該默認(rèn)為顯示*/
if (p == null) {
return false;
}
String value = p.getProperty(name);
ret = ("1".equals(value)) ? true : false;
return ret;
}
public String getValueStr(String section, String name) {
//boolean ret = false;
Properties p = (Properties) iniItem.get(section);
/**如果沒有設(shè)置該默認(rèn)為顯示*/
if (p == null) {
return null;
}
String value = p.getProperty(name);
return value;
}
}