InputStream/OutputStream для стандартного потока - Java

Насколько я понимаю, потоки символов и потоки байтов работают внутри потока C FILE *.

введите описание изображения здесь

стандартными потоками в мире C являются FILE * stdin, FILE *stdout и FILE *stderr


InputStream и OutputStream предоставляют подклассы для таких ресурсов, как file, pipe...

введите описание изображения здесь

InputStream и OutputStream Документация api не говорит о стандартных потоках - stdin/stdout/stderr.


Какой подкласс InputStream/OutputStream предназначен для стандартных потоков?

Ответ 1

Если вы посмотрите в источнике для класса System, вы можете увидеть следующие типы:

public final static PrintStream out = null;
public final static PrintStream err = null;
public final static InputStream in = null;

то есть. stdin и stderr имеют тип PrintStream, а stdin - InputStream.

Естественно, мы должны получить к ним доступ через System.out.println() и подобные операции.

В отношении InputStream/OutputStream, который вы указали в своем вопросе, PrintStream extends FilterOutputStream, который расширяет OutputStream. Основной целью PrintStream является добавление полезных функций стиля print(), println() и т.д.