Android读取ini文件

直接上代码说明,例如

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

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

IniReader类:

public class IniReader implements Serializable {

/** 配置文件 */

private HashMapiniItem = new HashMap();

/** 配置文件中对应的模块名,如[Comunication] */

private transient String mSectionName;

/** 每个模块中所对应的属性 */

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,就暂时这样使用,后续改进

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

*            对应模块中的属性名称

* @return true表示有对应的测试项,false表示没有对应的测试项

*/

public boolean getValue(String section, String name) {

boolean ret = false;

Properties p = (Properties) iniItem.get(section);

/**如果没有设置该默认为显示*/

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);

/**如果没有设置该默认为显示*/

if (p == null) {

return null;

}

String value = p.getProperty(name);

return value;

}

}

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 131,827评论 18 138
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,008评论 0 38
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 30,639评论 18 399
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 1,856评论 0 1
  • 仔细观察,你就会发现那些有着很多“阅读量”的文章作者,他们写的文章大体上都会有配图。更关键的是,这些配图还都很吸引...
    席双阅读 702评论 5 5