Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как вернуть стандартный вывод?


Автор: AndreQ 7.9.2007, 16:52
Код


import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

public class SysoutTest {
    
    public static void main(String[] args) {

        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        PrintStream out = new PrintStream(bout, true);
        System.setOut(out);

        System.out.println("1: This message will not show on console");
        out.close();


        System.setOut(System.out);
        System.out.println("2: Must show on console");
    }

}



Простой пример.  Сначала перенаправляем стандартный вывод в поток out.  Чё-то выводим -- всё сбрасывается туда. Хорошо.
Пытаемся вернутся к обратно -- выходным потоком ставим System.out.  Но следующие сообщения не выводятся. Почему?

Автор: COVD 7.9.2007, 17:05
попробуйте
Код

PrintStream standardOut = System.out;//get reference to standard out
...
System.setOut(out);//set new out
....
System.setOut(standardOut );//reset standard


Автор: AndreQ 7.9.2007, 17:29
Да, помогло, но как-то не очевидно что System.setOut() заменяет System.out.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)