首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中从外部进程进行读写?

如何在Java中从外部进程进行读写?
EN

Stack Overflow用户
提问于 2014-06-27 03:45:55
回答 1查看 458关注 0票数 3

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

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

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

在创建流程之后,我创建了一个读入PianoBar输出的BufferedReader:

代码语言:javascript
复制
    Process pianoBar = createPianoBarProcess();

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

但是当我通过这个阅读器读取PianoBar的输出时,它会显示PianoBar的第一行(“欢迎使用pianobar (2013.05.19-win32)!按?查看命令列表。”),然后显示下一行(“Email:")。然后它就挂了。

显然,它正在等待用户输入他们的电子邮件。但是,无论我怎么尝试,我都不能让我的Java程序在收到提示时将电子邮件写入PianoBar进程-它只是在读出最后一个字符时立即挂起。

有没有可能做我想做的事?我以为在网上找起来很容易,但我什么都找不到。我想要的只是一种简单的方式来在系统提示时写入外部进程。这看起来应该很简单。

EN

回答 1

Stack Overflow用户

发布于 2014-06-27 04:04:57

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

代码语言:javascript
复制
String s;
//s = email
BufferedWriter bufferedwriter = new BufferedWriter(new OutputStreamWriter(pianoBar.getOutputStream()));
bufferedwriter.write(s);
bufferedwriter.flush();

完成了!记住使用适当的try/catch将代码块括起来

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

https://stackoverflow.com/questions/24438941

复制
相关文章

相似问题

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