Установить System.setOut(); в командную строку

Я хочу установить поток вывода в командную строку следующим образом:

Process p = Runtime.getRuntime()
              .exec("C:\\Windows\\System32\\cmd.exe /c start cls");
System.setOut(new PrintStream(p.getOutputStream()));

но не работает, почему?


person Akhilesh Dhar Dubey    schedule 21.04.2013    source источник
comment
См. stackoverflow.com/questions/ 4157303/ (ответы ниже принятого ответа)   -  person ddmps    schedule 21.04.2013
comment
но это не выполняет команду в cmd... так что это неприемлемо.   -  person Akhilesh Dhar Dubey    schedule 21.04.2013


Ответы (1)


По умолчанию PrintStreams не будет автоматически сбрасывать записанное на них содержимое. Это означает, что данные, которые вы записываете в него, не будут немедленно отправлены в поток, который он окружает. Однако, если вы создаете PrintStream с помощью new PrintStream(p.getOutputStream(), true), он автоматически сбрасывается при вызове любого из методов println, записи массива байтов или записи новой строки. Таким образом, все, что вы пишете в него, будет немедленно доступно для процесса.

См. http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html

person TheSuccessor    schedule 21.04.2013
comment
Проблема не в этом. - person ddmps; 21.04.2013
comment
хорошо, я сделал это new PrintStream(p.getOutputStream(), true), но все еще не получаю сообщения о cmd, почему? - person Akhilesh Dhar Dubey; 21.04.2013