要在终端中执行SENNA,请使用以下命令:
senna.exe < input.txt > result.txt
现在我想在java程序中实现这一点。到目前为止,这是我的代码
ProcessBuilder builder = new ProcessBuilder("senna.exe");
builder.redirectErrorStream(true);
Process process = builder.start();
OutputStream stdin = process.getOutputStream();
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
writer.write("This is a test sentence");;
writer.flush();
String line;
while ((line = reader.readLine ()) != null) {
System.out.println ("Stdout: " + line);
}
为了重定向输入,输出和错误流,我使用了this thread中的代码。问题是我收到以下错误消息:
致命错误:无法打开文件hash / words.lst
我做错了吗?
答案 0 :(得分:0)
从您给出的示例中,您似乎正在调整this thread中的Linux代码,以便在带有senna.exe的Windows上运行。
从您收到的错误中,您似乎忘记将Linux的正斜杠(/)更改为Windows'反斜杠(\)。
尝试将文件路径的forwardslash更改为反斜杠。
答案 1 :(得分:0)
据我所知,您还没有设置ProcessBuilder对象的目录路径。这个错误似乎是因为有一个名为&#39; hash&#39;的文件夹。在Senna文件夹中,无法联系到。
请试试这个: builder.directory(新文件(&#34; / yourpathtosenna / senna /&#34;)); (我在linux机器上)
你的错误很可能会改变,但我不确定你是否会得到输出,因为我现在也在努力通过Linux在Linux机器上以交互方式运行senna。
祝你好运,如果成功,请更新!