Освоение класса PrintStream в Java: print, println и printf
Освоение класса PrintStream в Java
Класс PrintStream из пакета java.io расширяет OutputStream и предназначен для вывода человекочитаемого текста, а не сырых байтов.
Как работает PrintStream
В отличие от других потоков, PrintStream преобразует примитивные значения (int, char и т.д.) в форматированный текст перед записью в назначение. Он также никогда не выбрасывает IOException; ошибки сообщаются через checkError().
Авто-сброс (auto-flush) — ключевая особенность: поток автоматически сбрасывается при:
- печати символа новой строки (
\n), - вызове метода
println(), - записи байтового массива.
Создание PrintStream
Сначала импортируйте класс:
import java.io.PrintStream;
1. Из существующего OutputStream
// Пример: оборачиваем FileOutputStream
FileOutputStream fos = new FileOutputStream("log.txt");
PrintStream ps = new PrintStream(fos, true); // true = autoFlush
Записывает форматированный текст в log.txt с опциональным авто-сбросом.
2. Непосредственно из имени файла
PrintStream ps = new PrintStream("log.txt", true);
Конструктор принимает boolean для auto-flush. По умолчанию используется кодировка платформы.
3. Указание кодировки
PrintStream ps = new PrintStream("log.txt", true, StandardCharsets.UTF_8);
Использование Charset позволяет выбрать UTF-8, UTF-16 или любую поддерживаемую кодировку.
Примечание: Подробнее о наборах символов см. Java Charset API.
Основные методы PrintStream
print() и println()
print(Object obj)— выводит строковое представление объекта.println(Object obj)— добавляет системный разделитель строки.
Пример: использование System.out
public class Main {
public static void main(String[] args) {
System.out.print("Hello World.");
}
}
Здесь System.out — предварительно сконфигурированный PrintStream, поэтому его print() сразу доступен.
Пример: запись в файл
import java.io.PrintStream;
public class Main {
public static void main(String[] args) {
try {
PrintStream ps = new PrintStream("output.txt");
ps.print("This is a text inside the file.");
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Результирующий output.txt содержит:
This is a text inside the file.
printf()
Печатает форматированный текст с использованием спецификаторов формата:
System.out.printf("I am %d years old", 25);
Здесь %d заменяется на целое значение 25.
Пример: использование printf() с файлом
import java.io.PrintStream;
public class Main {
public static void main(String[] args) {
try {
PrintStream ps = new PrintStream("output.txt");
int age = 25;
ps.printf("I am %d years old.", age);
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
После выполнения output.txt содержит:
I am 25 years old.
Дополнительные методы PrintStream
| Метод | Описание |
|---|---|
close() | Закрывает поток и освобождает системные ресурсы. |
checkError() | Возвращает true, если поток столкнулся с ошибкой. |
append() | Добавляет указанную последовательность символов в поток. |
Для полных деталей см. официальную документацию Java PrintStream.
java
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Наследование в Java: концепции, типы и практические примеры
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление