Не могу считать текстовый документ и внести его содержимое в 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();
                }

Но пришлось убрать из метода, сохраняющего документ, приписки по типу "Шифр рейса: " и тд

→ Ссылка