在Java程序中执行Unix Diff时出错

3

有没有人能帮我解决一个问题,当我从Java程序中使用shell命令时,为什么会出现这个奇怪的错误:

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个回答

4

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接