2013-10-25 18 views
3

誰能幫助我弄清楚爲什麼在Java程序中脫殼而出時,我得到這個奇怪的錯誤:執行Unix的DIFF從Java程序錯誤

diff: extra operand `file1' 
diff: Try `diff --help' for more information. 

我的Java代碼如下所示:

Process p = Runtime.getRuntime().exec("diff --brief -I 'REGEXPATTERN' " + file1 + " " + file2); 
p.waitFor(); 

其中file1和file2是有效文件。當我在普通shell中執行命令時,它工作正常。當我從一個Java程序執行它時,我得到了那個錯誤。當我刪除-I 'REGEXPATTERN'時,該命令正常工作,所以我認爲它可能與-I標誌有關。

若要上述錯誤,我檢查,像這樣的錯誤流:

BufferedReader errorReader = new BufferedReader(new InputStreamReader(p.getErrorStream())); 

回答

4

更新:我通過使用EXEC的重載版本並使其一個String []命令的解決它。

String[] command = new String[]{"diff","--brief","-I","'REGEXPATTERN'",file1,file2}; 
Process p = Runtime.getRuntime().exec(command);