从Java程序错误执行Unix Diff

时间:2013-10-25 03:04:37

标签: java shell 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()));

1 个答案:

答案 0 :(得分:4)

更新:我通过使用exec的重载版本并向其传递一个String []命令来解决它。

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