2012-10-15 91 views
4

我正在为我的CSVreader创建一个Junit测试文件。我正在读取CSV文件的内容并将内容写入另一个文件。我想使用diff实用程序比较它们,我想使用diff的退出状态来知道内容是否相同。一般$?给出退出状态,但我不知道如何捕获它并在我的代码中使用它。任何人都可以在这方面帮助我吗?如何在Java中捕获shell命令的退出状态?

这是我的代码看起来

boolean hasSameContents = false; 

    command="diff "+mp.get("directory")+"/"+fileName+" "+mp.get("outdir")+"/"+fileName; 
    p= Runtime.getRuntime().exec(command); 
    p.waitFor(); 

这之后,我想退出状态,并用它在if条件一样对此表示赞赏

if(exit_status==0) 
    hasSameContents = true; 
    else 
    hasSameContents = false; 

即使其他建议。 :)

+1

-1 - 下一次,尝试阅读javadoc之前,你问一个问题! –

+0

是会记住的! –

回答

11

您正在寻找Process#exitValue

String command = "diff "+mp.get("directory")+"/"+fileName+" "+mp.get("outdir")+"/"+fileName; 
Process p = Runtime.getRuntime().exec(command); 
p.waitFor(); 
int exitStatus = p.exitValue(); 

不要忘了,你应该直到读InputStream,即使你不关心,有些流程会呛(未完成)中的内容输出缓冲区已被读取...

+0

肯定非常感谢:) –

+1

感谢一群读者的建议阅读InputStream!它在改变大量文件的文件权限方面挽救了我的生命。 – iozee

3

您可以尝试使用ProcessBuilder类创建Process对象,其中的exitValue()应该可以帮助您。

1

Runtime.exec()和朋友返回Process对象,它有一个返回退出代码的exitValue()方法。

+0

感谢:) –

相关问题