Потоки ввода/вывода. Пример копирования данных в файл. Класс OutputStream

Содержание

Слайд 2

Пример копирования данных в файл.

Примечание: чтобы скопировать файл, необходимо в папке проекта создать

Пример копирования данных в файл. Примечание: чтобы скопировать файл, необходимо в папке
файл file.txt с любым или пустым содержимым.

РЕЗУЛЬТАТ

Слайд 3

РЕЗУЛЬТАТ

Hе забываем об освобождении ресурсов через метод close()

РЕЗУЛЬТАТ Hе забываем об освобождении ресурсов через метод close()

Слайд 4

Класс OutputStream

Класс OutputStream является базовым классом для всех классов, которые работают с

Класс 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].

Слайд 5

Пример чтения данных из файла.

*InputStream символы не читают, так что писать на

Пример чтения данных из файла. *InputStream символы не читают, так что писать
русском нельзя, для этого используются ридеры.

РЕЗУЛЬТАТ

Слайд 6

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

Класс InputStream является базовым для всех классов, управляющих байтовыми потоками ввода. Рассмотрим
его основные методы:
int available(): возвращает количество байтов, доступных для чтения в потоке
void close(): закрывает поток
int read(): возвращает целочисленное представление следующего байта в потоке. Когда в потоке не останется доступных для чтения байтов, данный метод возвратит число -1
int read(byte[] buffer): считывает байты из потока в массив buffer. После чтения возвращает число считанных байтов. Если ни одного байта не было считано, то возвращается число -1
int read(byte[] buffer, int offset, int length): считывает некоторое количество байтов, равное length, из потока в массив buffer. При этом считанные байты помещаются в массиве, начиная со смещения offset, то есть с элемента buffer[offset]. Метод возвращает число успешно прочитанных байтов.
long skip(long number): пропускает в потоке при чтении некоторое количество байт, которое равно number

Класс InputStream

Слайд 7

РЕЗУЛЬТАТ

РЕЗУЛЬТАТ

Слайд 8

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

Абстрактный класс 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. Возвращает число успешно пропущенных символов

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

Слайд 9

Класс Writer определяет функционал для всех символьных потоков вывода. Его основные методы:
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 соответственно, предназначенными для работы с текстовыми файлами.

Слайд 10

Чтение и запись файла

Иерархия классов для управления потоками Ввода и Вывода.

Чтение и запись файла Иерархия классов для управления потоками Ввода и Вывода.

Слайд 11

Класс BufferedInputStream

Буферизированные потоки нужны прежде всего для оптимизации ввода-вывода.

Обращение к источнику данных,

Класс BufferedInputStream Буферизированные потоки нужны прежде всего для оптимизации ввода-вывода. Обращение к
например, чтение из файла, — дорогостоящая в плане производительности операция. И каждый раз обращаться к файлу для чтения по одному байту расточительно.
Поэтому BufferedInputStream считывает данные не по одному байту, а блоками и временно хранит их в специальном буфере. Это позволяет оптимизировать работу программы за счет того, что уменьшается количество обращений к файлу.

РЕЗУЛЬТАТ

размер буфера
в байтах.

Слайд 13

РЕЗУЛЬТАТ

РЕЗУЛЬТАТ