Чтение записей из текстового файла на Java - PullRequest
1 голос
/ 23 марта 2019

У меня есть текстовый файл, который содержит несколько записей в следующем формате

После прочтения файла, Как мне сохранить все эти записи, чтобы я мог обращаться к ним и манипулировать ими, например, обновляя поля взапись. Поле и содержимое поля разделены несколькими пробелами. А новые записи разделены пустой строкой

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```

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Похоже на разделенные табуляцией данные. Для их чтения используйте анализатор CSV, например univocity

0 голосов
/ 23 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...