2013-04-21 2 views
3

Я хочу, чтобы установить выходной поток в командной строке, как это:Set System.setOut(); Командная строка для

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

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

+0

См http://stackoverflow.com/questions/4157303/how-to-execute-cmd-commands-via-java (ответы ниже принятого ответа) – ddmps

+0

но не выполняет команду на cmd ... так что это неприемлемо. –

ответ

0

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

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

+0

Здесь не проблема. – ddmps

+0

ok Я сделал это 'new PrintStream (p.getOutputStream(), true)', но все еще не получая сообщение на cmd, почему? –

Смежные вопросы