Класс PrintWriter

Хотя применение System, out для вывода на консоль допустимо, он рекомендуется в основном для целей отладки или для примеров программ вроде тех, что приводятся в настоящей книге. Для реальных программ рекомендуемым способом записи на консоль при использовании Java является поток PrintWriter. PrintWriter — это один из классов, основанных на символах. Применение такого класса для консольного вывода упрощает интернационализацию ваших программ.

PrintWriter определяет несколько конструкторов. Один из тех, которые мы будем использовать, показан ниже:

PrintWriter(OutputStream OutputStream, boolean flushOnNewline)

Здесь OutputStream — объект типа OutputStream, a flushOnNewline управляет тем, будет ли Java сбрасывать буфер в выходной поток каждый раз при вызове метода println (). Если flushOnNewline равно true, то происходит автоматический сброс буфера, если же false, то это автоматически не делается.

PrintWriter поддерживает методы print () и println () для всех типов, вклю»1ая Object. То есть вы можете использовать эти методы таким же сйособо'м, как они применяются в System, out. Если аргумент не простого типа, то PrintWriter вызывает метод toStringO и затем печатает результат.

Чтобы писать на консоль с помощью PrintWriter, специфицируйте System.out в качестве выходного потока и сбрасывайте поток после каждого символа новой строки. Например, следующая строка кода создает PrintWriter, который подключен к консольному выводу:

PrintWriter pw = new PrintWriter(System.out, true);

Показанное ниже приложение иллюстрирует применение PrintWriter для управления консольным выводом:

// Демонстрация PrintWriter
import java.io.*;
public class PrintWriterDemo {
public static void main(String args[]) {
PrintWriter pw = new PrintWriter(System.out, true);
pw.println("Это строка");
int i = -7;
pw.println (i);
double d = 4.5e-7;
pw.println(d);
}
}

Вывод этой программы будет выглядеть следующим образом:

Это строка -7
4.5Е-7

Помните, что нет ничего неправильного в применении System.out для простого текстового вывода на консоль, когда вы изучаете Java или занимаетесь отладкой своих программ. Однако PrintWriter обеспечит возможность простой интернационализации для реальных программ. Поскольку никаких выгод от использования PrintWriter в простых программах нет, мы продолжим пользоваться System, out для вывода на консоль.