Для доступа к файлам в Java используются классы из пакета java.io. Для реализации высокопроизводительных операций ввода/вывода существуют также классы из пакета java.nio. Однако, их рассмотрение выходит за рамки данного курса. К тому же, я считаю, что разобраться там не составит труда после освоения традиционных способов.
Все операции ввода/вывода, а также методы создания потоков в Java выбрасывают проверяемые исключения. В обязательном порядке их необходимо отлавливать и обрабатывать. Как именно — это зависит уже от приложения, можно просто завершить работу, а можно попытаться восстановить нормальное функционирование с уведомлением пользователя. В любом случае, программист должен решить, что будет делать программа в случае возникновения ошибок ввода/вывода. Для ознакомления с исключениями можно послушать мой урок 9 из курса Java для тестировщиков.
На следующем занятии мы рассмотрим работу с двумя распространёнными типами файлов — properties и XML.
Домашнее задание для этого занятия:
- Написать программу, которая читает текстовый файл, состоящий из нескольких строк, и записывает эти строки в отсортированном по длине порядке в другой текстовый файл.
Например, файл aa.txt, содержит следующие строки:World!
Созданный файл bb.txt будет содержать эти же строки в отсортированном по длине виде:
Hello
And how do you do?Hello
Для небольшого усложнения этого задания можно сделать следующее:
World!
And how do you do?- добавить возможность указывать исходный файл, целевой файл и направление сортировки (восходящая или спадающая) в командной строке, например так:
java SortFile aa.txt bb.txt asc
, где SortFile — класс, который мы запускаем, aa.txt — исходный файл, bb.txt — целевой файл, asc или desc — направление сортировки.
- добавить возможность указывать исходный файл, целевой файл и направление сортировки (восходящая или спадающая) в командной строке, например так:
- Написать программу, которая копирует все файлы из заданного каталога в целевой, при этом переименовывая их в случайном порядке, назначая имена файлам из числовой последовательности от 1 до N, где N — это количество файлов в каталоге. При этом имена файлов не могут повторяться.
Например, есть каталог, в котором хранятся файлы: a.txt b.txt c.txt Программа копирует эти файлы в другой каталог, назначая им следующие имена: 1.txt 2.txt 3.txt При этом назначение имен происходит случайным образом, т. е. например, a.txt → 2.txt, b.txt → 1.txt, c.txt → 3.txt. Для выбора случайного числа, можно использовать Java класс Random.