I'm creating a Junit test file for my CSVreader. I'm reading the contents of CSV files and writing the contents into another file. I want to compare them using diff utility and I want to use the exit status of diff to know whether the contents are same or not. Generally $? gives the exit status but I don't know how to capture it and use it in my code. Can anyone help me in this regard?
This is how my code looks
boolean hasSameContents = false;
command="diff "+mp.get("directory")+"/"+fileName+" "+mp.get("outdir")+"/"+fileName;
p= Runtime.getRuntime().exec(command);
p.waitFor();
After this I want to get the exit status and use it in a if condition like this
if(exit_status==0)
hasSameContents = true;
else
hasSameContents = false;
Even alternative suggestions appreciated. :)
Runtime.exec()
and friends return aProcess
object, which has anexitValue()
method that returns the exit code.You're looking for Process#exitValue
Don't forget, you should read the contents of the
InputStream
even if you don't care, some processes will choke (not finish) until the output buffer has been read...Use method waitFor() of class Process. It returns an int, the return value of the process.
You can try using
ProcessBuilder
class to create aProcess
object, whoseexitValue()
should help you.