Re: Executing diff.exe with System call
In article <1252200690.01@user.newsoffice.de>, Hakan <H.L@softhome.net>
wrote:
I want to call the Windows version of the GNUDiff utilities from a
Java application with a call to the Runtime routines. I downloaded
and installed it and wrote the code that seemed to be right. This is
the equivalence of what I have for a call trying to compare two files
redirecting out to a file.
IIUC, redirection is handled by your shell. You may have to exec a
separate batch file to do it.
[...]
Yet nothing happens. It compiles and runs, but the output file is
nowhere to be found. Where have I gone wrong?
You might check to see if stdout or stderr show any results. Here's an
example of invoking diff under unix in the context of a JUnit test:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import junit.framework.Assert;
import org.junit.Test;
/** @author John B. Matthews */
public class MyProgramTest {
public MyProgramTest() {
}
@Test
public void testMain() {
System.out.println("testing...");
try {
String s;
Process p = Runtime.getRuntime().exec(
"diff file1 file2");
// read from the process's stdout
BufferedReader stdout = new BufferedReader (
new InputStreamReader(p.getInputStream()));
while ((s = stdout.readLine()) != null) {
System.out.println(s);
}
// read from the process's stderr
BufferedReader stderr = new BufferedReader (
new InputStreamReader(p.getErrorStream()));
while ((s = stderr.readLine()) != null) {
System.out.println(s);
}
Assert.assertEquals(p.waitFor(), 0);
p.getInputStream().close();
p.getOutputStream().close();
p.getErrorStream().close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>