我有一个文本文件,其中包含以下格式的多个记录
读取文件后,如何存储所有这些记录,以便我可以访问和操作它们,例如更新记录中的字段。该字段和字段内容由多个空格分隔。用空行分隔
birthday 27-03-1984
address 27 Drew Street, Elwood,
VIC
Postcode 3184
phone 0067282
name Carlos
birthday 27-03-1988
address 27 langhlam, Southbank,
VIC
Postcode 3184
phone 00672165```
答案 0 :(得分:1)
看起来像制表符分隔的数据。使用CSV解析器读取这些内容,例如univocity
答案 1 :(得分:0)
有提到的库,但是对于这种简单的情况,仅使用java.util
就可以轻松完成:
public class PersonsReader {
public static void main(String[] args) throws IOException {
String content = new String(Files.readAllBytes(Paths.get("inputFile.txt")));
List<Person> persons = Arrays.stream(content.split("\n\n"))
.map(PersonsReader::toPerson).collect(Collectors.toList());
// use persons list here
}
private static Person toPerson(String personData) {
Map<String, String> keyValue = Arrays.stream(personData.split("\n"))
.collect(Collectors.toMap(
line -> line.split("\\s+")[0],
line -> line.split("\\s+")[1]));
return new Person(keyValue.get("name"),
keyValue.get("birthday"),
keyValue.get("address"),
keyValue.get("Postcode"),
keyValue.get("phone"));
}
}
请注意,某些键在keyValue
中不存在,因此Person
构造函数为某些参数获取了null
。另外,在Person
构造函数中,您可以根据需要将参数转换为Integer
(并首先检查null
)。