Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Haulmont-презентации Java / Haulmont. java_se_4.ppt
Скачиваний:
54
Добавлен:
16.03.2015
Размер:
1.16 Mб
Скачать

InputStream

11

public int read(byte[] buf) throws

 

 

IOException

 

Метод аналогичен предыдущему при

 

условии read(buf, 0, buf.length)

 

public long skip(long count) throws

 

IOException

 

Пропускает, самое большее, count байтов

 

либо часть последовательности байтов до

 

конца потока. Возвращает количество

 

фактически пропущенных байтов. Если

 

значение count отрицательно, операция

 

не выполняется

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

InputStream

12

public int available() throws IOException

 

 

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

 

быть введены или пропущены, не вызывая

 

блокировки. Реализация метода, предлагаемая

 

по умолчанию, возвращает значение 0

 

public void close() throws IOException

 

Закрывает ранее открытый поток ввода. Метод

 

используется для высвобождения ресурсов,

 

связанных с потоком. Обращение к закрытому

 

потоку приводит к выбрасыванию исключения

 

типа IOException, но повторное закрытие

 

потока эффектов не вызывает. В реализации

 

метода, предлагаемой по умолчанию, никакие

 

действия не предусмотрены

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

InputStream

13• При реализации InputStream требуется, чтобы производный класс обеспечил практическое воплощение варианта метода read(), осуществляющего ввод единственного байта, поскольку остальные версии read() основываются на первой

Во многих случаях, однако, производительность операций может быть улучшена за счёт переопределения и других методов

Исходные версии методов available() и close() нуждаются в переопределении в соответствии с потребностями конкретных типов потоков

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

InputStream

14 Пример 1

import java.io.*; class CountBytes {

public static void main(String[] args) throws IOException { InputStream in;

if (args.length == 0) in = System.in;

else

in = new FileInputStream(args[0]); int total = 0;

while (in.read() != -1) total++;

System.out.println(total + " байтов");

}}

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

OutputStream

15• Абстрактный класс OutputStream во многом аналогичен классу InputStream; он предлагает модель вывода байтовых данных в объект - получатель.

Методы класса OutputStream перечислены ниже:

public abstract void write(int b) throws IOException

Выводит значение b в виде байта. В качестве параметра передаётся именно int, поскольку значение часто является результатом выполнения арифметических операций над аргументами byte. Выражение, операнды которого относятся к типу byte, обладает типом int, поэтому объявление параметра в виде int означает возможность избежать необходимости использования операций явного преобразования результатов вычисления выражения к типу byte. Следует заметить, однако, что выводится только 8 младших битов результат типа int

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

 

 

OutputStream

16

 

public void write(byte[] buf, int offset, int

 

 

 

count) throws IOException

 

 

Выводит count байтов массива buf, начиная с

 

 

элемента buf[offset]

 

 

public void write(byte[] buf) throws IOException

 

 

Метод аналогичен предыдущему при условии

 

 

write(buf, 0, buf.length)

 

 

public void flush() throws IOException

 

 

Осуществляет сброс потока. Единственный вызов

 

 

flush приводит к сбросу всех буферов в цепочке

взаимосвязанных потоков. Если поток не относится к категории буферизированных, реализация метода, предлагаемая по умолчанию, не предусматривает выполнения каких бы то ни было действий

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

OutputStream

17public void close() throws IOException

Закрывает ранее открытый поток вывода. Метод

используется для высвобождения ресурсов, связанных с потоком. Любые попытки обращения к закрытому потоку приводят к выбрасыванию исключения типа IOException, но повторное закрытие потока эффектов не вызывает. В реализации метода, предлагаемой по умолчанию, никакие действия не предусмотрены

При реализации OutputStream требуется, чтобы производный класс обеспечил практическое воплощение варианта метода write(), осуществляющего вывод единственного байта, поскольку остальные версии write основываются на первой

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

OutputStream

18• Во многих случаях, однако, производительность операций может быть

улучшена за счёт переопределения и других методов

Исходные версии методов flush() и close() нуждаются в переопределении в соответствии с потребностями конкретных типов потоков - в частности, перед закрытием буферизованного потока разумно выполнять его сброс

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Символьные потоки

19• Абстрактными классами, обеспечивающими чтение и запись символьных потоков, являются Reader и Writer

В каждом из них предусмотрены методы, схожие с «собратьями» из состава классов, представляющих байтовые потоки

Классы символьных потоков появились в составе Java после реализации байтовых потоков и имели целью обеспечение полной поддержки таблиц символов Unicode

Как и в случае байтовых потоков, по окончании использования символьного потока его следует закрывать, чтобы высвободить используемые им системные ресурсы

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Reader

20• Абстрактный класс Reader обеспечивает поддержку символьного потока чтения аналогично тому, как это

делает InputStream, реализующий модель байтового потока ввода, и методы Reader схожи с теми, которые объявлены в составе InputStream

public int read() throws IOException

Считывает один символ данных и возвращает его в виде целого числа из диапазона от 0 до 65535. Если символов, готовых для чтения, не существует ввиду достижения конца потока, возвращается значение -1. Метод выполняет блокировку до тех пор, пока имеются доступные для чтения символы, не достигнут конец потока либо не выброшено исключение

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Соседние файлы в папке Haulmont-презентации Java