端末コンソールを開いて、そこにコマンドを読み書きしようとしています。JavaプロセスからのInputStreamの読み込み
私のようないくつかの質問読み:そのことを Java Process with Input/Output Stream
は、端末を開き、小さなアプリケーションを構築し、コンソールにコマンドを渡すと、それはフォルダを参照のような任意のシステムCOMANDでうまく動作しますが、バックの結果を印刷することができました、ファイルやそのようなものを削除します。
問題は、コンソールから別のJavaプログラムを読み込み、その出力を読み込む必要がありますが、そのプログラムはjava.util.logging.Loggerを使用して出力の大部分を送信し、何らかの理由で起動アプリが ' Loggerが印刷するものを読んでください。
基本的に私は他のJavaアプリケーション用のラッパーのようにビルドしようとしています。なぜなら、私はそれと対話したいが、それを変更できないからです。
ありがとうございました。
EDITはここ
はコードですが、私はそれがコンソールに出力ロガープリント用「ノーマル」をstdoutにあるもののために動作しますが、ではないと述べたように、その基本的にはまた、別の質問から取られました。
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