Javaで外部コマンドを実行してその結果を取得しようとしてEclipse上で 下記サンプルを作成しました。ここで不思議なことが起きました。 下記を実行すると System.out.println(in.ready()) の部分でfalseが返り処理がwhileループの中に入らない状態です。 しかし、System.out.println(in.ready())の部分にブレークポイントを付けて1行ずつ実行していくと trueが返りwhileループの中の結果を読み取る処理にたどり着きます。 これはどういうことでしょうか。 public class Test { public static void main(String[] args) { String command = "hostname"; try { Process process = Runtime.getRuntime().exec(command); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); System.out.println(in.ready()); while(in.ready()) { } in.close(); } catch(Exception e) { e.printStackTrace(); } } }
↧