Как написать метод который потоком читает текстовый файл и возвращает список обьектов?
Хочу написать метод который читает поток txt файлик, и возвращает из него список объектов ( в моем случае список отелей). Как то правильно сделать?
private List<Hotel> readHotelBD(String path) throws Exception {
userRepository.validate(path);
ArrayList<Hotel> hotelList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
String line = "";
while ((line = br.readLine()) != null) {
hotelList.add(line);
}
}
return hotelList;
}
Ответы (2 шт):
Автор решения: Barmaley Red Star
→ Ссылка
Вообще то это не текстовый файл, а файл в формате JSon, причем судя по всему 1 строчка 1 json объект (что не очень обычно).
Вам надо прочитать 1 строчку и распарсить Json в Java объект.
Как парсить Json объекты - поищите поиском, здесь тонны примеров и ответов.
Автор решения: Олексій Моренець
→ Ссылка
private static List<Hotel> readHotelDB(String dbPath) throws IOException {
return Files.lines(Paths.get(dbPath))
.map(line -> line.substring(line.indexOf("{") + 1, line.indexOf("}")))
.map(s -> {
String[] fields = s.split(",");
int id = Integer.parseInt(fields[0].split("=")[1]);
String name = fields[1].split("=")[1].replace("'", "");
String country = fields[2].split("=")[1].replace("'", "");
String city = fields[3].split("=")[1].replace("'", "");
String street = fields[4].split("=")[1].replace("'", "");
return new Hotel(id, name, country, city, street);
})
.collect(Collectors.toList());
}
