Java를 통해 명령줄 인수를 실행하는 방법
질문:
어떻게 실행합니까? Java를 통한 명령줄 인수? 예를 들어 다음 코드를 생각해 보세요.
// Execute command String command = "cmd /c start cmd.exe"; Process child = Runtime.getRuntime().exec(command); // Get output stream to write from it OutputStream out = child.getOutputStream(); out.write("cd C:/ /r/n".getBytes()); out.flush(); out.write("dir /r/n".getBytes()); out.close();
이 코드는 명령줄을 열지만 "cd" 또는 "dir" 명령은 실행하지 않습니다.
답변:
Windows에서 여러 명령에 단일 프로세스를 재사용하려면 다음을 따르세요. 단계:
다음은 예:
String[] command = {"cmd"}; Process p = Runtime.getRuntime().exec(command); new Thread(new SyncPipe(p.getErrorStream(), System.err)).start(); new Thread(new SyncPipe(p.getInputStream(), System.out)).start(); PrintWriter stdin = new PrintWriter(p.getOutputStream()); stdin.println("dir c:\ /A /Q"); stdin.close(); int returnCode = p.waitFor(); System.out.println("Return code = " + returnCode);
SyncPipe 클래스:
class SyncPipe implements Runnable { public SyncPipe(InputStream istrm, OutputStream ostrm) { istrm_ = istrm; ostrm_ = ostrm; } public void run() { try { final byte[] buffer = new byte[1024]; for (int length = 0; (length = istrm_.read(buffer)) != -1; ) { ostrm_.write(buffer, 0, length); } } catch (Exception e) { e.printStackTrace(); } } private final OutputStream ostrm_; private final InputStream istrm_; }
위 내용은 Java에서 여러 명령줄 명령을 올바르게 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!