gpt4 book ai didi

java - 如何在 Java 中从外部进程读取和写入?

转载 作者:行者123 更新时间:2023-12-02 04:56:17 25 4
gpt4 key购买 nike

我想从 Java GUI 运行 PianoBar(PianoBar 是一个从命令行运行 Pandora 的程序)。我认为这会又快又脏,但我想我对程序之间的交互了解不够。

我使用 ProcessBuilder 启动 PianoBar 的实例,如下所示:

    private Process createPianoBarProcess() throws IOException {
String[] command = {"CMD", "/C", "pianobar"};
ProcessBuilder probuilder = new ProcessBuilder( command );
probuilder.redirectErrorStream(true);
probuilder.directory(new File("~~location where pianobar.exe is~~"));
Process process = probuilder.start();
return process;
}

创建进程后,我创建一个 BufferedReader 来读取 PianoBar 输出:

    Process pianoBar = createPianoBarProcess();

InputStream inS = pianoBar.getInputStream();
InputStreamReader isr = new InputStreamReader(inS);
BufferedReader br = new BufferedReader(isr);

但是当我通过此阅读器读取 PianoBar 的输出时,它会吐出 PianoBar 的第一行(“欢迎来到 PianoBar (2013.05.19-win32)!按 ? 获取命令列表。”),然后吐出输出下一行(“[?]电子邮件:”)。然后它就会挂起。

显然,它正在等待用户输入电子邮件。但无论我如何尝试,我都无法让我的 Java 程序在出现提示时将电子邮件写入 PianoBar 进程 - 它在读出最后一个字符后就挂起。

有可能做我想做的事吗?我以为在互联网上查找很容易,但我一直找不到任何东西。我想要的只是一种在出现提示时写入外部进程的简单方法。看起来这应该很容易......

最佳答案

您可以使用以下代码片段来开始工作:

String s;
//s = email
BufferedWriter bufferedwriter = new BufferedWriter(new OutputStreamWriter(pianoBar.getOutputStream()));
bufferedwriter.write(s);
bufferedwriter.flush();

完成!请记住用适当的 try/catch 包围代码块

关于java - 如何在 Java 中从外部进程读取和写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com