Разница между system.out и system.err - PullRequest
9 голосов
/ 24 мая 2010

Как я знаю, оба и один и тот же класс PrintStream. Кто-нибудь может сказать мне, как они отличаются ... как они изменили свое поведение?

Ответы [ 4 ]

13 голосов
/ 24 мая 2010

Разница не очевидна, потому что по умолчанию в большинстве операционных систем они записываются на консоль (тот же файл, консоль также является файлом).Тем не менее, вы можете иметь System.out запись в файл и System.err запись в консоль (монитор) - это всего лишь один сценарий.

Написать программу, которая генерирует как System.out, так и System.err.и попробуйте следующее:

java MyProgram > out.txt 2> err.txt # On a *NIX.

System.out сообщения будут отправлены в out.txt, а System.err сообщения - в err.txt.Главное, что нужно помнить, это думать о System.out и System.err как о потоках в файлы (каковы они есть), а не как о механизме вывода на монитор, что я и считал новичком.

3 голосов
/ 24 мая 2010

Они идут в системные потоки stdout и stderr соответственно. На большинстве ОС они различны и могут быть отправлены в разные места. Например, это может быть полезно, если выходные данные вашей программы должны были быть проанализированы другой программой - если нужно было сообщить об ошибке, stderr, как правило, было бы лучшим местом для этого, поскольку вы могли настроить его так, чтобы привлечь внимание человека. 1001 *

2 голосов
/ 24 мая 2010

Они ведут себя одинаково. Но first (out) - это ссылка на стандартный поток вывода (по умолчанию это консоль). И второе (err) - это ссылка на стандартный поток ошибок (по умолчанию это тоже консоль).

Но если вы хотите, вы можете изменить ссылку или добавить обертку / фильтр к каждому из них.

Моя IDE, например, отображает вывод из потока err в красных тонах.

0 голосов
/ 24 мая 2010

System.out отправляет вывод в стандартный поток вывода. System.err отправляет вывод в стандартный поток ошибок. По умолчанию оба из них пишут в консоль.

Однако преимущество заключается в том, что два потока можно перенаправить, чтобы вы могли перенаправить вывод system.out в обычный файл журнала, а выход System.err мог быть перенаправлен в журнал ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...