我试图打开一个终端控制台,并能够读/写命令。从Java进程读取InputStream
我读到这样一些问题: Java Process with Input/Output Stream
与已能够构建打开的终端,并通过命令控制台,并打印出结果后面一个小应用程序,它可以与任何系统COMAND像浏览文件夹运行良好,删除文件和类似的东西。
我遇到的问题是我需要从该控制台加载另一个Java程序并读取其输出,但该程序使用java.util.logging.Logger发送其大部分输出,由于某种原因,我的启动应用程序可以'阅读记录器打印的内容。
基本上我试图建立像另一个Java应用程序的包装,因为我想与它交互,但无法修改它。
感谢您的帮助。
编辑
下面是代码,但正如我所说的它工作的事情,在“正常”标准输出,而不是输出记录仪打印到控制台的基本上是从另一个问题采取的,也。
package launcher;
import java.io.*;
import java.util.Scanner;
public class Launcher {
public static void main(String[] args) throws IOException {
String line;
Scanner scan = new Scanner(System.in);
Process process = Runtime.getRuntime().exec("/bin/bash");
OutputStream stdin = process.getOutputStream();
InputStream stderr = process.getErrorStream();
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
while (scan.hasNext()) {
String input = scan.nextLine();
if (input.trim().equals("exit")) {
writer.write("exit\n");
} else {
writer.write("((" + input + ") && echo --EOF--) || echo --EOF--\n");
}
writer.flush();
line = reader.readLine();
while (line != null && !line.trim().equals("--EOF--")) {
System.out.println("Stdout: " + line);
line = reader.readLine();
}
if (line == null) {
break;
}
}
}
}
你还没有给我们太多的东西去我们这里,我们基本上猜测...如果记录器打印到STD OUT,那么这应该工作,但它可能会记录到文件,或打印到STD ERROR ,或者做这些事情的混合物。 – Jon 2012-03-26 09:00:07