2013-04-21 1 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

참조하지만 그 명령을 실행하지 않습니다 on cmd ... 허용되지 않습니다. –

답변

0

기본적으로 PrintStream은 자동으로 작성된 내용을 플러시하지 않습니다. 즉, 작성한 데이터는 즉시 랩핑되는 스트림으로 전송되지 않습니다. 그러나 new PrintStream(p.getOutputStream(), true)을 사용하여 PrintStream을 구성하면 println 메소드가 호출되거나 바이트 배열이 작성되거나 줄 바꿈이 작성되면 자동으로 플러시됩니다. 이 방법으로, 당신이 그것에 쓰는 모든 것은 즉시 프로세스에 액세스 할 수 있습니다.

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

+0

여기는 문제가되지 않습니다. – ddmps

+0

ok이 새로운 printStream (p.getOutputStream(), true)을 실행했지만 여전히 cmd에 메시지가 표시되지 않는 이유는 무엇입니까? –