#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:
Вам нужно указать окончание строки, чтобы он знал, что такое строка?
Комментарии:
1. Я уже некоторое время использую сканер, и мне никогда не приходилось этого делать, но это возможно. Однако я попробовал то же самое с scan.next() вместо scan.nextLine() и получил это исключение: java.util.NoSuchElementException
2. Будет ли у входного файла разные окончания строк, потому что он был изменен в другой ОС или редакторе? Можете ли вы поделиться фрагментом из входного файла, желательно с указанием окончаний строк?