Android讀取ini文件

直接上代碼說明,例如

mReader = new IniReader("/data/app/xxx.ini");

wifiSSID = mReader.getValueStr(SECTION, "ssid");

IniReader類:

public class IniReader implements Serializable {

/** 配置文件 */

private HashMapiniItem = new HashMap();

/** 配置文件中對(duì)應(yīng)的模塊名,如[Comunication] */

private transient String mSectionName;

/** 每個(gè)模塊中所對(duì)應(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:");

/** 配對(duì)模塊名 Eg:[Version]*/

//正則表達(dá)式受*.ini文件影響?

//有時(shí)候propertiLine.matches("\\[.*\\]")可行,有時(shí)候 propertiLine.matches("\\[.*?\\]")可行

//有此bug,就暫時(shí)這樣使用,后續(xù)改進(jìn)

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(".*=.*")) {

/** 配對(duì)屬性值 */

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

*? ? ? ? ? ? 對(duì)應(yīng)模塊中的屬性名稱

* @return true表示有對(duì)應(yīng)的測(cè)試項(xiàng),false表示沒有對(duì)應(yīng)的測(cè)試項(xià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;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,251評(píng)論 0 38
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,728評(píng)論 18 399
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,142評(píng)論 0 2
  • 野木齊愁立,煙花各自妝。 應(yīng)留客歸晚,草徑故迷藏。
    響石閱讀 214評(píng)論 0 3

友情鏈接更多精彩內(nèi)容