我正在尝试在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在参数错误时给出的错误消息。
我知道参数是正确的,因为如果我将其复制+粘贴到命令行,它也会起作用。
有什么想法吗?
答案 0 :(得分:0)
您是否尝试使用DataInputStream?
DataInputStream myStream = new DataInputStream(p.getInputStream());
while ((line = myStream.readLine()) != null) {
System.out.println(line);
}