2017-11-05 10 views
0

저는 한 디렉토리에서 명령을 실행해야하고 다른 디렉토리에 출력을 저장해야하는 eclipse rcp 제품에 대해 작업하고 있습니다.java를 사용하여 명령을 실행하고 생성 된 출력을 다른 디렉토리에 저장하십시오.

명령 출력은 파일입니다.

나는 그 일을하는 방법을 모르겠다.

내 코드가 작동하지 않는 것과 같습니다.

Runtime r = Runtime.getRuntime(); 
Process p = r.exec(("CMD /C cd D:\\dir1\\bin" + " && " + command), 
      null, new File("D:\\Data\\test")); 

그래서 명령은 dir1/bin에서 실행해야하며이 명령의 출력은 data/test에 저장해야하는 파일입니다.

위의 코드에서 출력 (즉, 생성 된 파일)은 예상치 않은 dir1/bin에 저장됩니다.

+0

Runtime.exec는 사용되지 않습니다. 그 대체품은 수년 동안 [ProcessBuilder] (https://docs.oracle.com/javase/9/docs/api/java/lang/ProcessBuilder.html) 클래스였습니다. 명령을 단일 문자열로 지정하지 말고 일련의 명령 행 인수로 지정해야합니다. 당신의 명령을 보지 않고, 어떻게 제대로 할 수 있는지를 말할 수는 없습니다. – VGR

답변

0

echo This is a command > output.txt

시험 후 파일

0

당신은 프로세스 개체 (P에 의해 주어진의 InputStream을 사용할 수 있습니다에 삽입하는 명령의 끝에 '> 경우 output.txt'를 추가합니다. getInputStream()) 및 FileOutputStream을 파일에 추가합니다. 끝내지 않는 while 루프로 새 스레드를 만들고 그 안에있는 문자를 읽고 파일에 쓰십시오.

Process p = .... 
InputStream is = p.getInputStream(); 
FileOutputStream fos = new FileOutputStream(new File("output.txt")); 
new Thread(new Runnable() { 
    public void run() { 
     while (true) { 
      char c = (char)is.read(); 
      if (c > -1) { 
       fos.write(c); 
      } else { 
       return; 
      } 
     } 
    } 
}).start(); 

코드를 테스트하지는 않았지만 제대로 작동합니다.