Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Выбор файлов
Простейший редактор текста
Копирование файлов UNICODE
Сохранение объекта Java в файле
Произвольные классы и файлы
Буферизация потоков
Разбор конфигура-
ционного файла

Работа с консолью
Работа с классом PrintWriter
Разбор строк класса String
Загрузка и просмотр изображений
Потоки в оперативной памяти
Конвейерные потоки
Комбинирование двух потоков
Комбинирование нескольких потоков
Поиск слова в текстовом файле
Произвольный доступ к файлу
Информация о файле
Работа с каталогами
Просмотр содержимого каталога
Просмотр каталога с фильтром
Панель для выбора каталога
Список системных свойств
Сохранение списка системных свойств
Контрольная сумма файла
Копирование, переименование, удаление файлов
Архивы ZIP
Создание архива ZIP
Распаковка архива ZIP
Обход дерева каталогов

Назад Вперед

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();

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


Назад Вперед

[Назад]