Android中文件解析有xml解析,json解析等。这里要说的是解析txt配置文件,返回JavaBean对象。
有一点是,配置文件每一行有一条数据,有些数据可能并不是我们所需要的,每组数据里面包含的元素不一定相同,而且取出来的数据也得符合要求。
先看JavaBean:
public class UpgradeInfo {
public String productID;
public String version;
public String loadUrl;
public String vendor;
public UpgradeInfo(){
productID = "";
version = "";
loadUrl = "";
vendor = "";
}
}
解析txt,代码中有注释:
public UpgradeInfo parseTXTorPHP(InputStream inputStream) {
DataInputStream dataInputStream = new DataInputStream(inputStream);
String strLine = null;
UpgradeInfo upgradeInfo = null;
UpgradeInfo upgradeInfo_vendor = null;
boolean hasVendorUpgradeInfo = false;
int tag = 0;
try {
while (true) {
strLine = dataInputStream.readLine();//一次读取一条数据
if (strLine == null) {
break;
}
if (strLine.startsWith("[")) {
if (tag != 0) {
mSb.append("{"); //每组数据以“[”开始。
}
tag = 1; //根据tag标签判断是否是第一组数据
}
mSb.append(strLine + ";"); //将所有字符串拼接
}
String[] arrys = mSb.toString().split("\\{"); //将字符串分组,得到每一组数据。
for (String string : arrys) {
if (!string.startsWith("[PRODUCTID]")) {
Log.i(TAG, "current msg not start A312");
continue; //如果不满足条件则不创建bean对象,并进行下一组数据判断。
}
String[] aaStrings = string.split(";"); //将符合条件的组切割成每条数据
String productIDString = placeS(aaStrings[0]);
if (aaStrings.length == 3 && upgradeInfo == null) {
upgradeInfo = new UpgradeInfo(); //满足条件时创建bean对象,添加数据
upgradeInfo.productID = productIDString;
upgradeInfo.version = aaStrings[1];
upgradeInfo.loadUrl = aaStrings[2];
} else if (aaStrings[3].equals("VENDOR") && aaStrings.length == 4 && upgradeInfo_vendor == null) {
//判断是否为null,文件中满足条件的数据有多条,只取第一条。
upgradeInfo_vendor = new UpgradeInfo();
upgradeInfo_vendor.productID = productIDString;
upgradeInfo_vendor.version = aaStrings[1];
upgradeInfo_vendor.loadUrl = aaStrings[2];
upgradeInfo_vendor.vendor = aaStrings[3];
hasVendorUpgradeInfo = true; //此处做标记,为了返回更合适的数据。
}else {
Log.i(TAG, "Please check your configFile!");
}
}
if (hasVendorUpgradeInfo) { //返回符合条件的数据
return upgradeInfo_vendor;
} else {
return upgradeInfo;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}