Чтение записей из текстового файла на Java

Другим решением было бы поставить вызов: SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this) в конструктор MileageFeeCalculator следующим образом:

@Service
public class MileageFeeCalculator {

    @Autowired
    private MileageRateService rateService; // <--- will be autowired when constructor is called

    public MileageFeeCalculator() {
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)
    }

    public float mileageCharge(final int miles) {
        return (miles * rateService.ratePerMile()); 
    }
}
1
задан Tushar Chawla 23 March 2019 в 09:01
поделиться

2 ответа

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

0
ответ дан rzwitserloot 23 March 2019 в 09:01
поделиться

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

0
ответ дан KernelMode 23 March 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: