Сканер не нашел исключение строки

#java #io #java.util.scanner

#java #io #java.util.scanner

Вопрос:

Я получаю следующее исключение.

Исключение java.util.NoSuchElementException: строка не найдена

Я получил эту ошибку при написании более крупной программы, которой нужно было читать из текстового файла, и поэтому решил провести тест.

 Scanner scan = new Scanner(new File("restrictions.txt");
String s1 = scan.nextLine();
System.out.println(s1);
  

И я все еще получаю исключение. У меня есть текстовый файл в той же папке, что и вызываемый класс restrictions.txt в котором есть текст. Что я делаю не так?

Комментарии:

1. Я также попробовал то же самое с scan.next() вместо scan.nextLine() и получил это исключение: java.util.NoSuchElementException

2. Вы уверены, что файл существует? Попробуйте System.out.println( file.getAbsolutePath() » » file.exists() ) и убедитесь, что оно есть.

3. Я почти уверен, что файл существует, сканер инициализируется без исключения, и я пытался сделать это через NetBeans и через файловый браузер, но я все равно проверю.

Ответ №1:

новый файл («restrictions.txt «) будет искать файл в «Начальном каталоге» вашего приложения — если вы используете Eclipse, это, вероятно, корень вашего проекта.

Чтобы открыть файл рядом с вашим классом, вы можете использовать конструктор Scanner, который принимает входной поток, который вы получаете с помощью

 YourClass.class.getResourceAsStream("restrictions.txt")
  

Ответ №2:

Вы должны использовать if(in.hasNextLine()) перед вызовом in.nextLine() . В противном случае для последней строки будет выброшена строка, не найденная исключением.

Ответ №3:

Javadoc для сканера

Вам нужно указать окончание строки, чтобы он знал, что такое строка?

Комментарии:

1. Я уже некоторое время использую сканер, и мне никогда не приходилось этого делать, но это возможно. Однако я попробовал то же самое с scan.next() вместо scan.nextLine() и получил это исключение: java.util.NoSuchElementException

2. Будет ли у входного файла разные окончания строк, потому что он был изменен в другой ОС или редакторе? Можете ли вы поделиться фрагментом из входного файла, желательно с указанием окончаний строк?