要在终端中执行塞纳,我使用以下命令:
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);
}为了重定向输入、输出和错误流,我使用了来自这条线的代码。问题是,我得到了以下错误消息:
致命错误:无法打开文件散列/words.lst
我做错了什么吗?
发布于 2015-09-11 16:56:23
从您给出的示例来看,您似乎正在调整来自这条线的Linux代码,以便在senna.exe上运行。
从您所得到的错误来看,您似乎忘记将Linux的正斜杠(/)更改为Windows的反斜杠()。
尝试将filepath的正斜杠改为反斜杠。
发布于 2016-03-08 11:37:16
据我所见,您还没有将目录路径设置为ProcessBuilder对象。此错误似乎是因为senna文件夹中有一个名为“散列”的文件夹无法到达。
请试一试:builder.directory(新文件(“/yourpathtosenna/senna/”));(我在linux机器上)
您的错误很可能会改变,但我不确定您是否会得到输出,因为目前我还在Linux机器上通过Java交互地运行senna。
祝你好运,如果你成功了,就更新吧!
https://stackoverflow.com/questions/32440649
复制相似问题