Не могу считать текстовый документ и внести его содержимое в List
В программе я реализую табличные расчеты, в которой нужно сохранять данные и открывать файл с сохранением. Проблема в том, что записывать в текстовый файл выходит нормально, а считывать нормально не выходит, возможно я не правильно понял работу с substring. В текстовый файл я записываю объекты таким образом:
private void writeFile() throws IOException {
FileWriter writer = new FileWriter("database.txt");
for (Ticket ignored : ticketsData) {
String flightCipher = ignored.getFlightCipher();
String placeNumber = ignored.getPlaceNumber();
String bookingStatus = ignored.getBookingStatus();
writer.write("Номер места: " + placeNumber + "; " + "Шифр рейса: " + flightCipher + "; " + "Статус брони: " + bookingStatus + "; " +"\n");
}
writer.close();
}
А открываю вот таким:
private void openFile() throws IOException {
try {
ticketsData.clear();
File file = new File("database.txt");
//создаем объект FileReader для объекта File
FileReader fr = new FileReader(file);
//создаем BufferedReader с существующего FileReader для построчного считывания
BufferedReader reader = new BufferedReader(fr);
// считаем сначала первую строку
String line = reader.readLine();
String placeNumber;
String flightCipher;
String bookingStatus;
while (line != null) {
placeNumber = line.substring(line.indexOf("Номер места: "), line.lastIndexOf(";"));
flightCipher = line.substring(line.lastIndexOf("Шифр рейса: "), line.lastIndexOf(";"));
bookingStatus = line.substring(line.indexOf("Статус брони: "), line.lastIndexOf(";"));
ticketsData.add(new Ticket(placeNumber, flightCipher, bookingStatus));
// считываем остальные строки в цикле
line = reader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Ответы (1 шт):
Автор решения: Eragon
→ Ссылка
Решил в итоге вот так:
String line = reader.readLine();
while (line != null) {
StringTokenizer tokenizer = new StringTokenizer(line, ";");
while (tokenizer.hasMoreElements()) {
ticketsData.add(new Ticket(tokenizer.nextToken(), tokenizer.nextToken(), tokenizer.nextToken()));
line = reader.readLine();
}
Но пришлось убрать из метода, сохраняющего документ, приписки по типу "Шифр рейса: " и тд