在使用字符流對文件進行讀取時,因爲有一些數據的格式要求,格式如下:
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讀取多行來獲取到指定格式的數據