13

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

这就是我的代码的样子

 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;

甚至替代建议表示赞赏。:)

4

4 回答 4

29

您正在寻找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即使您不在乎,您也应该阅读其中的内容,某些进程会阻塞(未完成),直到读取了输出缓冲区...

于 2012-10-15T09:26:31.820 回答
5

您可以尝试使用ProcessBuilder类来创建一个Process对象,该对象exitValue()应该对您有所帮助。

于 2012-10-15T09:27:38.917 回答
2

使用类 Process 的方法waitFor() 。它返回一个int,即进程的返回值。

于 2012-10-15T09:26:59.350 回答
2

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

于 2012-10-15T09:28:41.840 回答