Java обеспечивает ряд классов и методов, которые позволяют читать и записывать файлы. Для Java все файлы имеют байтовую структуру, a Java обеспечивает методы для чтения и записи байтов в файл. Кроме того, Java позволяет упаковывать байтовый файловый поток в символьно-ориентированный объект. Эта методика описана ниже. Здсь рассматриваются основы файлового ввода/вывода.
Для создания байтовых потоков, связанных с файлами, чаше всего используются два поточныхкласса — FilelnputStream иFileOutputStream. Для otкрытия файла создается объект одного из этих классов с указанием имени файла как аргумента конструктора. Хотя оба класса поддерживают несколько переопределенных конструкторов, мы будем использовать только следующее формы:
где fiieNameопределяет имя открываемого файла. Когда создается входной поток при отсутствующем файле, выбрасывается исключение FileNotFoundException. Для выходных потоков, если файл не может быть Создан, выбрасывается такое же исключение (FileNotFoundException).
Когда выходной файл открывается, любой файл, существовавший ранее с тем же самым именем, разрушается.
После завершения работы с файлом, его нужно закрыть, вызвав метод close().
Он определен как в FilelnputStream, так и в FileOutputStream в следующей форме:
void close() throws IOException
Для чтения файла можно использовать версию метода read(), который определен в FilelnputStream. Мы будем использовать такую версию:
int read() throws IOException
При каждом вызове метод читает один байт из файла и возвращает его в форме целочисленного значения. Когда read() встречает символ конца файла (EOF), то возвращает -1. Метод read() может выбрасывать исключение IOException.
Следующая программа использует read() для ввода и отображения содержимого текстового файла, имя которого указывается как параметр командной строки. Обратите внимание на блоки try/catch, обрабатывающие две ошибки, которые могут произойти во время использования программы: указанный файл не найден, или пользователь забыл включить в командную строку имя файла.