Топ-100Потоки ввода/вывода. PrintWriter и PrintStream - CodOrbits
LogoCodOrbits

Раздел: Потоки ввода/вывода

Раздел о том, как работать с файлами и потоками в Java: чтение, запись, буферизация и сериализация данных.

Все разделы
Иконка Потоки ввода/вывода

Потоки ввода/вывода. PrintWriter и PrintStream

Last updated: 5 мая 2025 г.

Часто так бывает, что нам нужно ввести куда-то информацию и откуда-то ее вывести. Например, извлечь что-нибудь из файла или записать туда что-либо.

При этом логично, что разные источники (будь-то файл или консоль или что-либо еще) с которыми мы совершаем ввод/вывод различны по своему устройству, соответственно и средства для взаимодействия с этими разными источниками должны быть разными. Например, чтобы вводить информацию в файлик и выводить информацию из файлика используются одни средства, а для ввода/вывода в консоль уже другие средства, для ввода/вывода куда-то еще другие.

Java предоставляет множество разных средств (разных классов) для ввода/вывода будь-то работа с файлами, консолью или другими источниками.

В Java есть два основных вида классов-потоков для ввода-вывода:

  • Inputstream, Outputstreamввод/вывод куда-либо неструктурированной последовательности байтов. (представляют удобные средства для передачи байтов)
  • Writer, Readerввод/вывод куда-либо последовательности символов Unicode (представляют удобные средства для передачи символов).

У этих классов есть подклассы. В этом уроке мы разберем потоки PrintWriter и PrintStream.


PrintWriter и PrintStream

Рассмотрим PrintWriter и PrintStream.

Самые простые потоки ввода/вывода – это System.in и System.out. Для ввода и вывода информации в консоль соответственно.

outэто на самом деле объект класса PrintStream. print() println()методы этого класса. Поток PrintStream с помощью print() или println() превращает переданный аргумент в один из этих методов в строку и передает в другой поток вывода куда-нибудь.

out создан за кулисами так, чтобы он выводил информацию в консоль.

PrintWriter PrintStream (нужны для передачи строк в поток) – print() println() превращают переданные аргументы в строки и передают их в какой-то поток.

PrintStream печатает на OutputStream, а PrintWriterна Writer(основное преимущество Writer, что можно указать кодировку).

Пример программы:

1import java.io.*;
2import java.util.*;
3
4class PrintSWLesson {
5    public static void main(String[] args) {
6
7        //так как System.out объект PrintStream можем сделать так
8        PrintStream ps = System.out;
9        ps.println("PrintStream");
10
11        //или с помощью PrintWriter. В конструктор передаем поток,
12        //в который будем передавать строку с помощью println
13        //в данном случае поток вывода в консоль System.out
14        PrintWriter pw = new PrintWriter(System.out);
15        pw.println("PrintWriter");
16        pw.flush(); //про flush чуть позже
17    }
18}

Вывод:


Дополнительные материалы

Официальная документация по PrintStream и PrintWriter

Additional Material Icon
Divider

Разница между потоками байтов и символов на JournalDev

Additional Material Icon
Divider

Разница между PrintWriter и PrintStream на Stack Overflow

Additional Material Icon

Следующие уроки

FileStream в Java: чтение и запись файлов

7
мин.

Similar Articles Icon
Divider

DataStream в Java

8
мин.

Similar Articles Icon
Divider

BufferedStream в Java

11
мин.

Similar Articles Icon