最近业务上用到了天气查询接口,因为输入源仅有城市名称,接口需要用到的是城市代码,为了实现功能,以key=value形式把全部城市和代码持久化到了本地txt文件。
这是用StringTokenizer(虽然这是一个遗弃类,但是对于小萌新来说还是挺不错的)做的一个功能函数读取txt中的key=value保存到map集合返回:
public Map readKeyValueTxtToMap() {
//循环直至返回map
while (true) {
final HashMap keyValueMap = new HashMap();//保存读取数据keyValueMap
//每一个循环读取一组key=value
while (true) {
try {
final InputStream open = this.getAssets().open(
"key_value.txt");
final byte[] readArray = new byte[open.available()];
open.read(readArray);
open.close();
final StringTokenizer allLine = new StringTokenizer(new String(readArray, "UTF-8"), "\r\n");//以"\r\n"作为key=value的分解标志
while (allLine.hasMoreTokens()) {
final StringTokenizer oneLine = new StringTokenizer(allLine.nextToken(), "=");//以"="作为分解标志
final String leftKey = oneLine.nextToken();//读取第一个字符串key
if (!oneLine.hasMoreTokens()) {
break;
}
final String rightValue = oneLine.nextToken();//读取第二个字符串value
hashMap.put(leftKey, rightValue);
}
return keyValueMap;
} catch (IOException e) {
e.printStackTrace();
return keyValueMap;
}
}
}
}