ホームページ >Java >&#&チュートリアル >Java のランタイムを使用してシェル スクリプトを実行するときに出力を効果的にリダイレクトする方法は?
Java のランタイムを使用してリダイレクトされた出力でシェル スクリプトを実行する
Java の Runtime.exec() メソッドを使用してシェル スクリプトを実行しようとすると、出力リダイレクトが意図したとおりに機能しない可能性があります。この問題は、リダイレクト演算子 >> が使用されている場合に発生します。
問題:
Process p = Runtime.getRuntime().exec("sh somescript.sh >> out.txt");
スクリプトが正常に実行されたにもかかわらず、出力は指定されたファイルおよびファイル自体にリダイレクトされません。
解決策:
出力を効果的にリダイレクトするには、Java の ProcessBuilder クラスを利用する必要があります:
ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh"); builder.redirectOutput(new File("out.txt")); builder.redirectError(new File("out.txt")); Process p = builder.start(); // may throw IOException
説明:
ProcessBuilder を利用すると、stdout ストリームと stderr ストリームのリダイレクトを個別に構成できます。 redirectOutput() メソッドと redirectError() メソッドを使用すると、出力リダイレクト用のファイルを指定できます。
ファイル「out.txt」が存在しない場合は、自動的に作成されることに注意してください。すでに存在する場合、既存のコンテンツは上書きされます。
以上がJava のランタイムを使用してシェル スクリプトを実行するときに出力を効果的にリダイレクトする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。