2013-07-07 32 views
1

我試圖從Java代碼運行命令行。使用Java在文件中從命令行寫入結果

public void executeVcluto() throws IOException, InterruptedException { 
    String command = "cmd /c C:\\Users\\User\\Downloads\\program.exe C:\\Users\\User\\Downloads\\file.txt 5 >> C:\\Users\\User\\Downloads\\result.txt"; 
    Process process = Runtime.getRuntime().exec(command); 
    process.waitFor(); 
    if (process.exitValue() == 0) { 
     System.out.println("Command exit successfully"); 
    } else { 
     System.out.println("Command failed"); 
    } 

} 

但是,輸出結果應寫入result.txt的文件未創建。當我在Windows上從cmd執行該命令時,將創建文件並將結果寫入其中。我得到命令退出成功消息。有人能幫助我嗎?

回答

3

輸出重定向是shell功能,java進程不明白。

一些其它替代方案是 1.創建與上述各行的單個批文件並使用的ProcessBuilder /運行時 2.使用的ProcessBuilder調用它,並使用輸出流重定向輸出。 實例(它是外殼,將用於批處理文件工作過)在這裏

ProcessBuilder builder = new  ProcessBuilder("cmd", "/c", "C:\\Users\\User\\Downloads\\program.exe", "C:\\Users\\User\\Downloads\\file.txt" , "5"); 
builder.redirectOutput(new File("C:\\Users\\User\\Downloads\\result.txt")); 
builder.redirectError(new File("C:\\Users\\User\\Downloads\\resulterr.txt")); 

Process p = builder.start(); // throws IOException 

(以上摘自Runtime's exec() method is not redirecting the output改動)

+0

+1過程建設者和重定向 – MadProgrammer

0

嘗試cmd.exe,如有必要,包括路徑。

您正在創建一個全新的進程,這與向shell發出命令不同。

相關問題