ホームページ  >  記事  >  Java  >  Java のランタイムを使用してシェル スクリプトを実行するときに出力を効果的にリダイレクトする方法は?

Java のランタイムを使用してシェル スクリプトを実行するときに出力を効果的にリダイレクトする方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 08:24:29613ブラウズ

How to Effectively Redirect Output When Executing Shell Scripts using Java's Runtime?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。