JavaでOSのコマンドを実行したい時は
Javaでバッチ開発をしていると、OSのコマンドを使いたくなるシーンがあります。例えば、以下のような場合などです。
そのような時に用いられるのが「java.lang.Runtime」というクラスで、Javaとその実行環境との橋渡しをする役目を持っています。基本的な使い方としては、以下のようになります。
public class Command { public static void main(String[] args) { try { Runtime runtime = Runtime.getRuntime(); runtime.exec("ls"); } catch (IOException ex) { } } }
さらに、実行した結果が欲しい場合は、「java.lang.Process」というクラスを利用します。というより、Runtimeインスタンスの「exec」メソッドの戻り値は、この「Process」クラスになっています。
- execメソッドの戻り値の「Process」クラスを取得
- 「Process」クラスのメソッドを使って内容などを取得
内容を取得する場合は、「getInputStream」メソッドを使用します。
public static void main(String[] args) {
try {
Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec("ls");
InputStream is = p.getInputStream();
// InputStreamさえ得られれば、後は必要に応じて内容を取得すればよい。
// 以下、省略
} catch (IOException ex) {
}
}
終了コードのみで問題ない場合は、「waitFor」メソッドを使用します。
public static void main(String[] args) { try { Runtime runtime = Runtime.getRuntime(); Process p = runtime.exec("ping 192.168.0.1"); return p.waitFor(); } catch (IOException ex) { } }