Назад
Вперед
7.9. Работа с классом PrintWriter
Приложение использует класс PrintWriter для вывода
на консоль. В примере показаны приемы работы с
методами этого класса.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Немного теории
В документации к JDK версии 1.1 вместо класса
PrintStream, использование которого
демонстрировалось в предыдущем примере,
рекомендуется применять новый класс PrintWriter. В нем
есть все методы для форматированного вывода
данных, предусмотренные в классе PrintStream.
В чем же отличие класса PrintWriter от PrintStream?
Прежде всего, в классе PrintWriter применен
усовершенствованный способ работы с символами
UNICODE и другой механизм буферизации вывода.
Остановимся на буферизации.
В классе PrintStream буфер вывода сбрасывался всякий
раз, когда вызывался метод print или println. При
использовании класса PrintWriter вы можете отказаться
от автоматического сброса буферов, выполняя его
явным образом при помощи метода flush.
Кроме того, методы класса PrintWriter никогда не
создают исключений. Для проверки ошибок вы
должны вызывать метод checkError.
Конструкторы класса PrintWriter
В классе PrintWriter предусмотрено два конструктора,
позволяющих работать с выходными потоками
класса OutputStream:
public PrintWriter(OutputStream out);
public PrintWriter(OutputStream out,
boolean autoFlush);
Первый из этих конструкторов создает поток без
автоматического сброса буферов.
Способ сброса буферов при использовании
второго конструктора зависит от значения
параметра autoFlush. Если он равен true, автоматический
сброс буферов выполняется, а если false - нет.
Методы класса PrintWriter
Набор реализаций основных методов print и println
класса PrintWriter аналогичен набору реализация этих
методов класса PrintStream. Вы найдете перечисление
этих методов в описании к предыдущему примеру.
Здесь же мы упомянем только методы flush и checkError.
Метод flush вызывает принудительный сброс буфера
вывода. Если поток PrintWriter создан на базе
стандартного потока вывода System.out, то записанные
в него данные появятся на консоли только после
выполнения сброса буфера (автоматического или
сделанного методом flush).
Что же касается метода checkError, то в случае
возникновения ошибок он возвращает значение true.
Описание примера
Наш пример представляет собой простейшее
консольное приложение, отображающее в
консольном окне значения различных типов с
использованием класса PrintWriter:
* PrintWriter demonstration
Boolean: true
Double: 0.3333333333333333
Float: 0.33333334
int: 512
long: 134217728
В главном классе приложения определен
единственный статический метод main, получающий
управление сразу после запуска приложения:
import java.io.*;
import java.util.*;
public class PrintWriterDemo
{
public static void main(String args[])
{
. . .
}
}
Получив управление, метод main создает поток
класса PrintWriter на основе стандартного потока
вывода System.out:
PrintWriter pw =
new PrintWriter(System.out, true);
Указав значение второго параметра
конструктора, равное true, мы включаем режим
автоматического сброса буферов.
Далее наша программа выполняет серию операций
по выводу в поток данных различного типа:
pw.println(
"* PrintWriter demonstration\n");
pw.print("Boolean: ");
pw.println(true);
pw.print("Double: ");
pw.println((double)1/3);
pw.print("Float: ");
pw.println((float)1/3);
pw.print("int: ");
pw.println(512);
pw.print("long: ");
pw.println((long)512 * 512 * 512);
В конце своей работы приложение вызывает метод
println без параметров:
pw.println();
В результате будет выполнен принудительный
переход на следующую строку.
Назад Вперед |