简体   繁体   中英

Executing an external program in Java with arguments

I'm trying to run an external program in java like this:

Process p = Runtime.getRuntime().exec("./shufflet 1 2 <in.seq> out.seq");
BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line;
while ((line = bri.readLine()) != null) {
    System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
    System.out.println(line);
}
bre.close();
p.waitFor();

Basically, this program that I'm executing (Shufflet) reads in whatever is in in.seq and then writes something to out.seq based on that.

If I copy+paste that line ( ./shufflet 1 2 <in.seq> out.seq ) to the command line it works fine.

If I execute the java program it outputs Usage: shufflet [OPTIONS] NSEQ ORDER <INFILE >OUTFILE which is the error message that Shufflet gives if the parameters are wrong.

I know the parameters are correct because, again, it works if I copy+paste it to the command line.

Any ideas?

Have you tried with DataInputStream ?

DataInputStream myStream = new DataInputStream(p.getInputStream());

while ((line = myStream.readLine()) != null) {
    System.out.println(line);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM