Чтение файла в Java
Подготовьте простой текстовый файл note.txt в той же папке, что и программа. Поместите короткую строку: oak. Откройте Reader.java, создайте File для note.txt, оберните его в Scanner, выведите nextLine(), затем close сканер. Скомпилируйте javac Reader.java и запустите java Reader. Экран должен показать oak. Вторая демонстрация открывает missing.txt и останавливается с FileNotFoundException. Запись файла Java оставьте на следующую страницу — создайте note.txt вручную в редакторе.
Прочитать строку, уже лежащую на диске
Предыдущие страницы останавливались на исключениях, которые вы ловили или бросали. Эта страница доходит до букв, остающихся в файле после завершения программы. Откройте учебный файл Reader.java. Держите публичное имя класса Reader, чтобы совпадало с файлом. Удалите оставшиеся демо броска Signal, блоки catch Guard, остановки массива Alarm и любой Scanner, читающий с клавиатуры nextLine из System.in. Программа не должна ждать ввода. Чтение файла всё ещё использует Scanner, но конструктор принимает File, не клавиатуру.
Нужны три import сверху:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
Пометьте main как throws FileNotFoundException, чтобы отсутствующий файл проявился как проверяемое исключение. В main назовите файл:
File note = new File("note.txt");
Создайте сканер на этом файле:
Scanner scan = new Scanner(note);
Выведите первую строку:
System.out.println(scan.nextLine());
Завершите чтение:
scan.close();
Перед компиляцией создайте note.txt рядом с Reader.java и введите ровно oak в первой строке. Сохраните текст. Программа Java не создаёт этот текстовый файл на этой странице.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Reader {
public static void main(String[] args) throws FileNotFoundException {
File note = new File("note.txt");
Scanner scan = new Scanner(note);
System.out.println(scan.nextLine());
scan.close();
}
}
Из папки, где лежат Reader.java и note.txt, выполните javac Reader.java. Когда скобки и точки с запятой сходятся, javac ничего своего не пишет. Затем java Reader — не java Reader.java. Уберите .java из команды запуска. Если javac не находит File или Scanner, import отсутствуют или с ошибками — верните их раньше других ошибок.
Экран показывает oak. Сканер прочитал первую строку с диска и вывел её. Программа не должна ждать клавиатуру. Если терминал ждёт ввода, Scanner всё ещё на System.in, а не на File note. Исправьте конструктор. Если видите empty или стек IllegalArgumentException, ещё работает Signal — перейдите к java Reader с файлом чтения. Если 2 или blocked, запускается старый Alarm или Guard.
Пройдите успешный путь раз. Java стартует в Reader.main. Объект File хранит имя note.txt. Scanner открывает это имя. nextLine берёт первую строку. println показывает oak. close завершает сканер. Больше ничего печатать не должно. Без note.txt в папке сначала создайте текст.
Здесь nextLine — следующая строка в файле, не запрос пользователю. То же имя метода путает после страницы ввода: то же имя, другой источник. Буквы oak живут в текстовом файле; класс Java только читает.
📊 File and Scanner roles
| Piece | What it does on this page |
|---|---|
| File | holds the disk name such as note.txt |
| Scanner | reads lines from that File with nextLine |
| close | finishes the Scanner read so the file handle is released |
Отсутствующее имя бросает FileNotFoundException
Вторая программа сохраняет форму, но указывает на имя, которого нет на машине: missing.txt. Не создавайте этот файл. Запуск должен остановиться с FileNotFoundException.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Reader {
public static void main(String[] args) throws FileNotFoundException {
File note = new File("missing.txt");
Scanner scan = new Scanner(note);
System.out.println(scan.nextLine());
scan.close();
}
}
Скомпилируйте javac Reader.java, затем запустите java Reader. На этот раз программа не печатает oak. Терминал сообщает FileNotFoundException. Предложение throws на main позволяет проверяемому исключению выйти без catch здесь. Вы уже практиковали catch; здесь узнаёте, что отсутствующее имя останавливает чтение. Важно писать FileNotFoundException. Одно слово «ошибка» слишком расплывчато.
Если случайно создали missing.txt, удалите его. Предпочитайте успешную демо note.txt для тихого экрана с oak. Демо отсутствующего имени — только чтобы увидеть FileNotFoundException. Меняйте файлы осознанно, не смешивая успех и остановку в одном main.
Не придумывайте запись Java для note.txt здесь. Редактора достаточно для практики чтения. Следующая страница — запись Java. Эта страница держит ясное чтение и ясную остановку по имени.
Сравнение с throw на Signal
На странице throw java Signal останавливался с IllegalArgumentException, когда чашки пусты. Здесь остановка за отсутствующий файл — FileNotFoundException, а успешный путь печатает строку с диска. Файлы Signal оставьте как историю; для демо файлов запускайте java Reader.
Обёртки, массивы и catch — история. Сегодня новые токены: File, Scanner на файле, nextLine с диска и FileNotFoundException.
Что эта страница оставляет для записи файлов
Эта страница только читает существующий файл или останавливается при отсутствии имени. Следующая показывает запись букв в файл Java. Оставайтесь с чтением oak и именем FileNotFoundException. Пока не добавляйте обязательный вызов записи в демо Reader.
Перед записью файлов
Вы можете читать note.txt через Scanner и видеть oak. Можете открыть missing.txt и увидеть FileNotFoundException. Скомпилируйте Reader.java и по очереди запустите java Reader для каждой демо. Создайте note.txt вручную рядом с классом. Следующая страница — запись, где программа сама хранит текст.
Держите успешное чтение для тихого экрана, демо отсутствующего имени для остановки, запись Java вне этой страницы. Когда после java Reader с note.txt появляется oak, чтение выполнило работу урока и вы готовы к записи.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху