首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java重定向输入输出流

Java重定向输入输出流
EN

Stack Overflow用户
提问于 2015-09-07 14:09:06
回答 2查看 1.3K关注 0票数 2

要在终端中执行塞纳,我使用以下命令:

代码语言:javascript
复制
senna.exe < input.txt > result.txt

现在,我想在java程序中实现这一点。到目前为止,这是我的代码

代码语言:javascript
复制
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

我做错了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2015-09-11 16:56:23

从您给出的示例来看,您似乎正在调整来自这条线的Linux代码,以便在senna.exe上运行。

从您所得到的错误来看,您似乎忘记将Linux的正斜杠(/)更改为Windows的反斜杠()。

尝试将filepath的正斜杠改为反斜杠。

票数 0
EN

Stack Overflow用户

发布于 2016-03-08 11:37:16

据我所见,您还没有将目录路径设置为ProcessBuilder对象。此错误似乎是因为senna文件夹中有一个名为“散列”的文件夹无法到达。

请试一试:builder.directory(新文件(“/yourpathtosenna/senna/”));(我在linux机器上)

您的错误很可能会改变,但我不确定您是否会得到输出,因为目前我还在Linux机器上通过Java交互地运行senna。

祝你好运,如果你成功了,就更新吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32440649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档