这是一种更灵活的方法.我们可以指定一个自定义(单行)分隔符,在文件的开头或末尾实际上不需要分隔符(但可以给出),记录的行数是灵活的.数据被解析为一个简单的模型,可用于验证数据和创建最终对象.
private String recordDelimiter = "~";
public static List> parse(Reader reader) {
List> result = new ArrayList>();
List record = new ArrayList();
boolean isFirstLine = true;
while ((line = reader.readLine()) != null) {
line = line.trim();
if (line.length() == 0) {
continue; // we skip empty lines
}
if (delimiter.equals(line.trim()) {
if (!isFirstLine) {
result.add(record);
record = new ArrayList();
} else {
isFirstLine = false; // we ignore a delimiter in the first line.
}
continue;
}
record.add(line);
isFirstLine = false;
}
if (!result.contains(record))
result.add(record); // in case the last line is not a separator
return result;
}