Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java / Лекции / lection4.pdf
Скачиваний:
71
Добавлен:
15.03.2015
Размер:
201.62 Кб
Скачать

 

Таблица 4.2. Методы класса InputStream.

 

 

public abstract int read()

Читает следующий байт из потока ввода.

 

Возвращает значение этого байта в диапазоне

 

от 0 до 255 или -1, если достигнут конец потока.

public int read(byte[] b)

Последовательно читает байты из потока ввода

 

и записывает их в массив b. Может быть

 

прочитано от 0 до (b.length – 1) байт.

 

Возвращает количество прочитанных байт или -

 

1, если достигнут конец потока.

public int read(byte[] b, int off, int len)

Последовательно читает от 0 до len байт потока

 

ввода и записывает их в массив b со

 

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

 

прочитанных байт или -1, если достигнут конец

 

потока.

public long skip(long n)

Пропускает n байт потока ввода. Возвращает

 

количество действительно пропущенных байт

 

от 0 до n.

public int available()

Возвращает количество байт потока ввода,

 

которые могут быть прочитаны или пропущены

 

в данный момент.

public void close()

Закрывает поток ввода и освобождает

 

связанные с ним системные ресурсы.

4.2.2. Класс OutputStream

Класс OutputStream отвечает за вывод бинарных данных. Поток создаётся вызовом конструктора OutputStream (). После окончания работы с потоком его необходимо закрыть с помощью метода close().

 

Таблица 4.3. Методы класса OutputStream.

 

 

public abstract void write(int b)

Записывает байт b в поток вывода.

 

Записываются только младшие 8 бит аргумента

 

b.

public void write(byte[] b)

Записывает последовательно все элементы

 

массива b в поток вывода.

public void write(byte[] b, int off, int len)

Записывает len элементов массива b, начиная с

 

off, в поток вывода.

public void flush()

Сбрасывает данные на физический носитель.

public void close()

Закрывает поток вывода и освобождает

 

связанные с ним системные ресурсы.

4.3. Символьный ввод-вывод

4.3.1. Класс Reader

Класс Reader отвечает за ввод символьных данных. Поток создаётся вызовом конструктора Reader(). После окончания работы с потоком его необходимо закрыть с помощью метода close().

 

Таблица 4.4. Методы класса Reader.

 

 

public int read()

Читает следующий Unicode-символ из потока.

 

Возвращает значение прочитанного символа в

 

диапазоне от \u0000 до \uFFFF или -1, если

 

достигнут конец потока.

public int read(CharBuffer target)

Читает символы из потока ввода в буфер класса

 

CharBuffer. Возвращает количество

 

прочитанных символов или -1, если достигнут

 

конец потока.

public int read(char[] cbuf)

Последовательно читает символы из потока

 

ввода и записывает их в массив cbuf. Может

 

быть прочитано от 0 до (cbuf.length – 1)

 

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

 

символов или -1, если достигнут конец потока.

public abstract int read(char[] cbuf, int off, int len)

Последовательно читает от 0 до len символов

 

потока ввода и записывает их в массив cbuf со

 

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

 

прочитанных символов или -1, если достигнут

 

конец потока.

public long skip(long n)

Пропускает n символов потока ввода.

 

Возвращает количество действительно

 

пропущенных символов от 0 до n.

public boolean ready()

Возвращает true, если в данный момент можно

 

прочитать хоть один символ из потока ввода.

public abstract void close()

Закрывает поток ввода и освобождает

 

связанные с ним системные ресурсы.

4.3.2. Класс Writer

Класс Writer отвечает за вывод символьных данных. Поток создаётся вызовом конструктора Writer(). После окончания работы с потоком его необходимо закрыть с помощью метода close().

 

Таблица 4.5. Методы класса Writer.

 

 

public void write(int c)

Записывает символ c в поток вывода.

 

Записываются только младшие 16 бит

 

аргумента c.

public void write(char[] cbuf)

Записывает последовательно все элементы

 

массива cbuf в поток вывода.

public abstract void write(char[] cbuf, int off,

Записывает len элементов массива cbuf,

int len)

начиная с off, в поток вывода.

public void write(String str)

Записывает строку str в поток вывода.

public void write(String str, int off, int len)

Записывает len символов строки str, начиная с

 

off, в поток вывода.

public abstract void flush()

Сбрасывает данные на физический носитель.

public abstract void close()

Закрывает поток вывода и освобождает

 

связанные с ним системные ресурсы.

4.4.Связьмеждубайтовымии символьными потоками

4.4.1. Класс InputStreamReader

Класс InputStreamReader конвертирует данные, получаемые из байтового потока, в их символьное представление. Данные декодируются в соответствие с указанной кодировкой в символы Unicode (тип char). Класс InputStreamReader является наследником класса Reader и, следовательно, реализует все его методы.

 

Таблица 4.6. Конструкторы и методы класса InputStreamReader.

 

 

 

InputStreamReader(InputStream in)

 

Создаёт класс InputStreamReader на основе

 

 

байтового потока, используя кодировку по

 

 

умолчанию.

InputStreamReader(InputStream in, String

 

Создаёт класс InputStreamReader на основе

charsetName)

 

байтового потока. Для преобразования данных

 

 

используется кодировка charsetName.

String getEncoding()

 

Возвращает кодировку, в соответствие с

 

 

которой преобразуются данные.

Пример:

 

 

Reader reader = new InputStreamReader(inputStream, "UTF-8");

4.4.2. Класс OutputStreamWriter

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

Таблица 4.7. Конструкторы и методы класса OutputStreamWriter.

OutputStreamWriter(OutputStream out)

Создаёт класс OutputStreamWriter на основе

 

байтового потока, используя кодировку по

 

умолчанию.

OutputStreamWriter(OutputStream out, String

Создаёт класс OutputStreamWriter на основе

charsetName)

байтового потока. Для преобразования данных

 

используется кодировка charsetName.

String getEncoding()

Возвращает кодировку, в соответствие с

 

которой преобразуются данные.

Пример:

 

Writer writer = new OutputStreamWriter(outputStream, "UTF-8");

4.5.Буферизованный ввод-вывод

4.5.1. Класс BufferedReader

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

 

Таблица 4.8. Конструкторы класса BufferedReader.

 

 

BufferedReader(Reader in)

Создаёт буферизованный поток ввода на

 

основе существующего экземпляра класса

 

Reader. Используется стандартный размер

 

буфера.

BufferedReader(Reader in, int sz)

Создаёт буферизованный поток ввода на

 

основе существующего экземпляра класса

 

Reader с заданным параметром sz размером

 

буфера.

 

Таблица 4.9. Методы класса BufferedReader.

 

 

public String readLine()

Читает текст до символа конца строки и

 

записывает его в объект класса String.

Остальные методы унаследованы от класса Reader.

Пример:

BufferedReader in = new BufferedReader(reader); BufferedReader in = new BufferedReader(

new InputStreamReader(inputStream));

4.5.2. Класс BufferedWriter

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

 

Таблица 4.10. Конструкторы класса BufferedWriter.

 

 

BufferedWriter(Writer out)

Создаёт буферизованный поток вывода на

 

основе существующего экземпляра класса

 

Writer. Используется стандартный размер

 

буфера.

BufferedWriter(Writer out, int sz)

Создаёт буферизованный поток вывода на

 

основе существующего экземпляра класса

 

Writer с заданным параметром sz размером

 

буфера.

 

Таблица 4.11. Методы класса BufferedWriter.

 

 

public void newLine()

Записывает символ конца строки в соответствие

 

с системными установками.

Остальные методы унаследованы от класса Writer.

Пример:

BufferedWriter out = new BufferedWriter(writer); BufferedWriter out = new BufferedWriter(

new OutputStreamWriter(outputStream));

4.5.3. Класс PrintStream

Класс PrintStream предоставляет возможности форматирования выводимого текста. Он реализует такие методы, как print, println и printf.

4.6.Файловыйввод-вывод

4.6.1. Классы для файлового ввода-вывода

Для работы с файлами в Java созданы оболочки над базовыми классами ввода-вывода.

FileInputStream – поток байтового ввода из файла.

FileOutputStream – поток байтового вывода в файл.

FileReader – поток символьного ввода из файла.

FileWriter – поток символьного вывода в файл.

4.6.2. Копирование бинарного файла

В листинге 4.1 представлена программа, копирующая бинарный файл input.dat в файл output.dat и подсчитывающая количество скопированной информации.

Соседние файлы в папке Лекции