我試圖打開一個終端控制檯,並能夠讀/寫命令。從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