1

私は現在、Javaを使用してWindowsシェルエミュレーターを作成しています。Process.getOutputStream()メソッドを使用してプログラムの出力を読み取って表示すると、ほとんどのプログラムは正常に動作しているように見えます。プログラムからMySqlコンソールを実行すると、これは当てはまらないようです。MySqlはデフォルトのシステムコンソールに出力されないようです。

MySqlコンソールに接続してその出力を表示し、エミュレーターを介してユーザーが入力を提供できるようにするにはどうすればよいですか?

4

1 に答える 1

0

管理には2つの問題があると思います。1 つ目は、出力をレスキューすることです。この記事 ( http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.htm ) を使用して、その方法を理解することができます。レスキュー出力。そこで、コマンド ラインを使用して、スイッチ -e を使用して mysql コマンド ライン ソフトウェアからの出力をレスキューします。

             try {
                FileOutputStream fos = new FileOutputStream("c:/test.txt");
                Runtime rt = Runtime.getRuntime();
                Process proc = rt.exec("mysql.exe -u root -e \"select * from table_name\" database_name");

                StreamGobbler errorGobbler = new StreamGobbler(
                        proc.getErrorStream(), "ERROR");

                StreamGobbler outputGobbler = new StreamGobbler(  proc.getInputStream(), "OUTPUT", fos);

                errorGobbler.start();
                outputGobbler.start();

                int exitVal = proc.waitFor();
                System.out.println("ExitValue: " + exitVal);
                fos.flush();
                fos.close();
            } catch (Throwable t) {
                t.printStackTrace();
            }
于 2015-07-19T09:47:31.807 に答える