Существуют библиотеки, подобные упомянутым, но для этого простого случая можно легко использовать только 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
).