Потоки ввода-вывода (IO Streams)
Часть 1
Основы потокового ввода-вывода
•Поток – процесс передачи данных от источника и/или к приемнику
•Поток источника инициирует передачу данных и
называется потоком ввода
•Поток приёмника прерывает процесс передачи данных и называется потоком вывода
•Источник и приемник являются узловыми точками потоками
•Типами узловых потоков являются файлы, области
памяти и каналы между процессами
Основные классы для работы с потоками
|
Поток |
|
|
Поток байт |
|
|
Поток символов |
|
|
|
|
|
|
|
|
|
|
|
Поток |
|
|
InputStream |
|
|
Reader |
|
|
источника |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Поток |
|
|
OutputStream |
|
|
Writer |
|
|
приемника |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Данные внутри потоков
•Java поддерживает два типа потоков – символьные и байтовые
•Ввод и вывод символьных данных осуществляется
«cчитывателями» и «записывателями» (readers and writers)
•Ввод и вывод байтовых данных выполняется с помощью входных потоков (input streams) и
выходных потоков (output streams).
•Поэтому термин «поток» (stream) обычно соотносится с байтовыми данными, а термины
«считыватель»/«записыватель» (reader/writer)
– с символьными данными.
Иерархия классов байтового ввода/вывода
Классы символьного ввода/вывода
Методы InputStream
Три основных метода:
int read()
int read(byte[] buffer)
int read(byte[] buffer, int offset, int length)
Остальные методы:
void close() int available()
long skip(long n) boolean markSupported() void mark(int readlimit) void reset()
http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html
Методы OutputStream
Три основных метода:
void write(int c)
void write(byte[] buffer)
void write(byte[] buffer, int offset, int length)
Остальные методы:
void close() void flush()
http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html
Методы Reader’а
Три основных метода:
int read()
int read(char[] cbuf)
int read(char[] cbuf, int offset, int length)
Остальные методы:
void close() boolean ready() long skip(long n)
boolean markSupported()
void mark(int readAheadLimit) void reset()
http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html
Методы Writer’а
Основные методы:
void write(int c)
void write(char[] cbuf)
void write(char[] cbuf, int offset, int length) void write(String string)
void write(String string, int offset, int length)
Остальные методы:
void close() void flush()
http://docs.oracle.com/javase/7/docs/api/java/io/Writer.html