2011-03-04 5 views
0

Java를 사용하여 .dat 파일을 실행하는 코드를 작성했습니다. 하지만 그 응용 프로그램을 실행하면 실행 시간이 걸리고 결과가 절반이고 이후 시간이 지나면 결과가 완료됩니다.자바를 통해 .bat 파일을 실행하는 데 시간이 필요합니까?

String file = config.getOutPath() + "run_doxygen.bat"; 
       BufferedWriter out = new BufferedWriter(
         new FileWriter(file)); 

       String cmd = "doxygen " + config.getOutPath() + "Doxyfile"; 
       runtime.exec(cmd); 
       System.out.println("cmd_doxy:"+cmd); 
       out.write(cmd); 
       out.newLine(); 
       out.close(); 

doxygen이이 xml 파일을 생성합니다

여기 내 코드입니다. 10 xml 파일을 생성한다고 가정 해 봅시다. * .bat 파일을 실행하면 5 개의 파일이 생성되고 나머지 5 개의 파일을 생성하려면 시간이 걸립니다. 및 * .bat 파일에는 다음이 포함됩니다. doxygen "path"

경로는 구성 파일의 위치입니다. 그것은 cmd 또는 더블 클릭으로 실행하면 잘 작동합니다.

아무도 아이디어가 없습니다 . 감사합니다.

+0

"반쪽 결과"가 정확히 무엇을 의미합니까? docygen의 결과가 실행됩니까? 배치 파일의 내용? –

+0

첫 번째 문장에서'.bat file'을 사용한다고 가정 해 보겠습니다. –

답변

0

작성자를 플러시해야 할 수도 있습니다.

out.newLine(); 
out.flush(); 
out.close(); 
+2

Writer를 닫으면 자동으로 출력이 플러시되므로 수동으로 수행하면 중복됩니다. –

+0

안녕하세요. 감사하지만 작동하지 않습니다. : ( – Ashish

0

당신이 할 수있는 프로그램을하려는 것을 완전히 명확하지 않다,하지만 실제로하고있다되어 다음과 같습니다

  1. 그것은 쓰기의 "박쥐"파일을 엽니 다.
  2. "doxygen"명령을 별도의 외부 프로세스로 실행합니다.
  3. 명령을 표준 출력에 쓴 다음 파일을 씁니다.

출력을 파일에 기록하는 데 다소 시간이 걸린다는 경우 완전히 예상치 못한 것은 아닙니다. 운영 체제는 새로 시작된 doxygen 응용 프로그램을 시작하기 위해 CPU 시간의 큰 부분을 제공하기로 결정할 수 있습니다. 차단되지 않으면 자바 애플리케이션이 몇 초 동안 타임 슬라이스를 얻지 못할 수 있습니다. 그 후에 OS는 하나 또는 다른 것이 끝날 때까지 두 응용 프로그램 사이를 전환 할 수 있습니다.

하지만 왜 중요합니까? 자바 애플리케이션은 doxygen이 끝나기를 기대하거나 필요로합니까? 당신은 외부 명령에 의해 생성 된 스트림을 소모하지 않는 경우,이 프로그램이 중단 될 수 있습니다

Process proc = runtime.exec(cmd); 
// do more stuff. 
int rc = proc.waitFor(); 
// Whoopee! the process has finished (or died) check the rc to see which. 
+0

그 xml 파일을 생성 한 후 그 파일을 구문 분석 할 필요가 많은 시간이 소요되면 내 응용 프로그램에 좋지 않습니다. GUI 기반 응용 프로그램과 자체가 실행을 완료하는 데 너무 많은 시간을 기다려야하기 때문에. 감사합니다 4 답장. – Ashish

+0

@Ashish - 내가 언급 한 것들을 제외하면 doxygen을 더 빨리 완성시키기 위해 할 수있는 일은 훨씬 더 많다고 생각하지 않는다. 더 빠르고 더 큰 컴퓨터를 얻는 것 말고는. –

0

:

은 만약 그렇다면,이 솔루션은 같은 것을 할 것입니다. 거의 Runtime.exec을 사용하는 모든 문제를 다루는 this article을보십시오.

관련 문제