Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
подгон 2018 (легендарный) / 3 курс -20241122T221211Z-001 / Java / Лабораторные / Основы Java. Лабораторная 3. Новая 2809.doc
Скачиваний:
2
Добавлен:
23.11.2024
Размер:
138.75 Кб
Скачать

Лабораторная работа № 3 Обработка файлов

Цель работы: получить навыки работы с символьными и байтовыми потоками ввода/вывода на языке Java.

Продолжительность работы - 4 ч.

Оглавление

Введение 3

Класс InputStream 3

Класс OutputStream 4

Файловый ввод/вывод 6

Буферизованные потоки 6

Класс File 7

Класс RandomAccessFile 10

InputStreamReader и OutputStreamWriter 11

Пример подсчета количества определенного слова в файле 12

Пример объекта "Книга" с методами чтения и записи в файл 13

Работа с конфигурационными файлами 15

Пример класса preloader для загрузки конфигурационного файла 16

Контрольные вопросы 18

Задание 19

Приложение 1. Работа с датой и временем в Java 21

Пример. Вывод текущего времени 21

Пример. Манипуляции с датой: получение текущей, создание новой, проверки 21

Приложение 2. Класс StreamTokenizer 22

Введение

Базовым пакетом для обеспечения операций ввода/вывода в Java является java.io. В нём определяется несколько абстрактных классов, которые затем расширяются, и на их основе создаются некоторые полезные типы. Потоки почти всегда являются парными: если существует FileInputStream, то есть и FileOutputStream.

Класс InputStream

В абстрактном классе InputStream объявляются методы для чтения из заданного источника. InputStream является базовым классом для большинства входных потоков в java.io и содержит следующие методы, которые (кроме конструктора) при обнаружении ошибки во входном потоке возбуждают исключение IOException:

  • public InputStream()

Класс InputStream содержит только безаргументный конструктор.

  • public abstract int read() throws IOException

Читает из потока один байт данных и возвращает прочитанное значение, лежащее в диа­пазоне от 0 до 255 (не от –128 до 127). При достижении конца потока возвращается флаг –1. Метод блокирует работу программы до появления значения на входе.

  • public int read(byte[] buf)

Читает данные в массив байтов. Метод блокирует работу программы до появления вво­димого значения, после чего заполняет buf всеми прочитанными байтами, в количестве не более buf.length. Метод возвращает фактическое количество прочитанных байтов или –1 при достижении конца потока.

  • public int read(byte[] buf, int off, int len)

Читает данные в байтовый подмассив. Метод блокирует работу программы до начала ввода, после чего заполняет часть массива buf, начиная со смещения off, в количестве до len байтов, если не встретится конец массива buf.

  • public long skip(long count)

Пропускает до count байтов во входном потоке. Количество пропущенных байтов может быть меньше count из-за достижения конца потока. Возвращает фактическое количество пропущенных байтов.

  • public int available()

Возвращает количество байтов, которые могут быть прочитаны без блокировки работы программы.

  • public void close()

Закрывает входной поток. Метод должен вызываться для освобождения любых ресурсов (например, файловых дескрипторов), связанных с потоком. Если не сделать это, то ре­сурсы будут считаться занятыми, пока сборщик мусора не вызовет метод finalize данного потока.