在使用字符流对文件进行读取时,因为有一些数据的格式要求,格式如下:
key1 = value1
key2 = value2
value2_2
value2_3
key3 = value3
......
现在要存储为key-value的格式:
key1 value1
key2 value2 value2_2 value2_3
key3 value3
.......
使用到的字符流为:BufferedReader
伪代码如下:
String line = "";
StringBuilder value = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
while((line =reader.readLine() ) != null) {
//是否满足格式: key = value
if(Pattern.compile(".*[\t]*=[\t]*.*").matcher(line).matches()) {
String keyValues = line.split("=");
key = keyValues[0];
value.setLength(0);
value.append(keyValues[1]);
reader.mark(1000);
while((line = reader.readLine()) != null) {
//如果下一行满足格式,那么直接得到结果,否则将下一行的结果作为上一行的value
if(Pattern.compile(".*[\t]*=[\t]*.*").matcher(line).matches()) {
//获得到真正的value
value.toString();
reader.reset();
break;
} else {
value.append(line);
}
}
}
}
通过mark和reset读取多行来获取到指定格式的数据