用参数在Java中执行外部程序

时间:2011-12-02 03:28:46

标签: java exec

我正在尝试在java中运行外部程序:

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();

基本上,我正在执行的程序(Shufflet)读入in.seq中的任何内容,然后根据该内容向out.seq写入内容。

如果我将该行(./shufflet 1 2 <in.seq> out.seq)复制+粘贴到命令行,它可以正常工作。

如果我执行java程序,它会输出Usage: shufflet [OPTIONS] NSEQ ORDER <INFILE >OUTFILE,这是Shufflet在参数错误时给出的错误消息。

我知道参数是正确的,因为如果我将其复制+粘贴到命令行,它也会起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用DataInputStream?

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

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