Главная страница

33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики


Скачать 1.6 Mb.
НазваниеБелорусский государственный экономический университет кафедра экономической информатики
Дата06.01.2023
Размер1.6 Mb.
Формат файлаdocx
Имя файла33 Java. Потоки ввода-вывода. Работа с файлами.docx
ТипЛитература
#874813
страница2 из 13
1   2   3   4   5   6   7   8   9   ...   13

Потоки байтов

Класс InputStream



Класс InputStream является базовым для всех классов, управляющих байтовыми потоками ввода. Рассмотрим его основные методы:

  • int available() - возвращает количество байтов, доступных для чтения в потоке;

  • void close() - закрывает поток;

  • int read() - возвращает целочисленное представление следующего байта в потоке. Когда в потоке не останется доступных для чтения байтов, данный метод возвратит число - 1;

  • int read(byte[] buffer) - считывает байты из потока в массив buffer. После чтения возвращает число считанных байтов. Если ни одного байта не было считано, то возвращается число -1;

  • int read(byte[] buffer, int offset, int lengt h) -

считывает некоторое количество байтов, равное length, из потока в массив buffer. При этом считанные байты помещаются в массиве, начиная со смещения offset, то есть с элемента buffer[offset]. Метод возвращает число успешно прочитанных байтов;

  • long skip(long number) - пропускает в потоке при чтении некоторое количество байт, которое равно number.



Класс OutputStream



Класс OutputStream является базовым классом для всех классов, которые работают с бинарными потоками записи. Свою функциональность он реализует через следующие методы:

  • void close() - закрывает поток;

  • void flush() - очищает буфер вывода, записывая все его содержимое;

  • void write(int b) - записывает в выходной поток один байт, который представлен целочисленным параметром b;

  • void write(byte[] buffer) - записывает в выходной поток массив байтов buffer;

  • void write(byte[] buffer,

int offset,

int length) -

записывает в выходной поток некоторое число байтов, равное length, из массива buffer, начиная со смещения offset, то есть с элемента buffer[offset].

Абстрактные классы Reader и Writer



Для обработки символьных потоков в формате Unicode применяется отдельная иерархия подклассов абстрактных классов Reader и Writer, которые почти полностью повторяют функциональность байтовых потоков, но являются более актуальными при передаче текстовой информации.

Абстрактный класс Reader предоставляет функционал для чтения текстовой информации. Рассмотрим его основные методы:

  • absract void close() - закрывает поток ввода;

  • int read() - возвращает целочисленное представление следующего символа в потоке. Если таких символов нет, и достигнут конец файла, то возвращается число -1;

  • int read(char[] buffer) - считывает в массив buffer из потока символы, количество которых равно длине массива buffer. Возвращает количество успешно считанных символов. При достижении конца файла возвращает -1;

  • int read(CharBuffer buffer) - считывает в объект CharBuffer из потока символы. Возвращает количество успешно считанных символов. При достижении конца файла возвращает -1;

  • absract int read(char[] buffer,

int offset,

int count) -

считывает в массив buffer, начиная со смещения offset, из потока символы, количество которых равно count;

  • long skip(long count) - пропускает количество символов, равное count. Возвращает число успешно пропущенных символов.

Класс Writer определяет функционал для всех символьных потоков вывода. Его основные методы:

  • Writer append(char c) - добавляет в конец выходного потока символ c. Возвращает объект Writer;

  • Writer append(CharSequence chars) - добавляет в конец выходного потока набор символов chars. Возвращает объект Writer;

  • abstract void close() - закрывает поток;

  • abstract void flush() - очищает буферы потока;

  • void write(int c) - записывает в поток один символ, который имеет целочисленное представление;

  • void write(char[] buffer) - записывает в поток массив символов;

  • absract void write(char[] buffer,

int off,

int len) -

записывает в поток только несколько символов из массива buffer. Причем количество символов равно len, а отбор символов из массива начинается с индекса off;

  • void write(String str) - записывает в поток строку;

  • void write(String str, int off, int len) - записывает в поток из строки некоторое количество символов, которое равно len, причем отбор символов из строки начинается с индекса off.

Функционал, описанный классами Reader и Writer, наследуется непосредственно классами символьных потоков, в частности классами FileReader и FileWriter соответственно, предназначенными для работы с текстовыми файлами.


1   2   3   4   5   6   7   8   9   ...   13


написать администратору сайта