Чтение текстового файла в массив с использованием Java создает исключение - PullRequest
0 голосов
/ 01 октября 2019

Даже если файл Movie_db.txt не пустой, я получаю следующее исключение:

текстовый файл состоит из этого:

hankужас 20,0 18 1

public void syncDB(List<Movie> movieList) throws IOException {
  Scanner scanner = new Scanner("Movie_db.txt");
  BufferedReader reader = null;
  try {
      String line = null;
      String title;
      String genre;
      double movieDuration;
      int ageRestriction;
      int id;
      while (scanner.hasNext()) {
          title = scanner.next();
          genre = scanner.next();
          movieDuration = scanner.nextDouble();
          ageRestriction = scanner.nextInt();
          id = scanner.nextInt();
          movieList.add(new Movie(title, genre, movieDuration, ageRestriction, id));
      }
  } catch (Exception e) {
      System.out.println("List is empty");
  }
}

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

Если ваш путь верен, в вашем коде есть проблема. Я бы изменил эту строку

    Scanner scan = new Scanner("Movie_db.txt");

на эту

    Scanner scan = new Scanner(Paths.get("Movie_db.txt"));

Причина в том, что в вашем фрагменте сканер читает только строку «Movie_db.txt», а во второйраспознается как путь к файлу.

Прочитано Документация сканера для получения дополнительной информации

0 голосов
/ 01 октября 2019

genre = scan.next(); строка вызывает исключение, потому что сейчас ничего не осталось для чтения из файла, что приводит к выполнению блока catch.

Вы предоставляете строку для сканера, которая является допустимым входным сигналом для сканера. Следовательно, он никогда не читает файл.

Scanner scan = новый сканер (новый файл ("full_path_to_container_dir / Movie_db.txt"));

Пожалуйста, посмотрите наэтот блог о том, как читать из файла с помощью сканера - https://www.java67.com/2012/11/how-to-read-file-in-java-using-scanner-example.html.

...