0

Java 内からコマンド ライン プログラムを使用するにはどうすればよいですか?

Javaを介してドット言語(ウィキペディアを参照)のグラフ定義をインタープリタープログラムドット(GraphVizを参照)に渡そうとしています。

問題は、ドットグラフをその InputStream に送信した後、プログラムが応答しないことです。これは、説明の送信が終了したことを認識していないためです。

これは、私が現在持っているものです:

package exercise4;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class Main {
    public static void main(String[] args) {
        PrintStream out = System.out;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        try {
            final String start =
                "strict graph LSR%1$d {\n" +
                " node [shape=circle color=lightblue style=filled];\n\n" +
                " {rank=same; A--B [label=6];}\n" +
                " {rank=same; C--D [label=12]; D--E [label=4];}\n" +
                " A--C [label=4]; B--D [label=4]; B--E [label=9];\n\n" +
                " node [shape=record color=\"#000000FF\" fillcolor=\"#00000000\"];\n}\n";
            Process dot = Runtime.getRuntime().exec("dot -Tsvg");
            in = new BufferedReader(new InputStreamReader(System.in));
            out = new PrintStream(dot.getOutputStream(), false, "UTF-8");
            out.printf(start, 0);

            out.flush();
            out.close();

            while(in.ready()) {
                System.out.println(in.readLine());
            }
            in.close();
            dot.destroy();
        } catch (UnsupportedEncodingException ex) {
        } catch (IOException ex) {
        } finally {
            out.close();
        }
    }
}
4

1 に答える 1