ホームページ  >  記事  >  Java  >  exec() メソッドを使用して Java 出力リダイレクトの失敗を修正する方法

exec() メソッドを使用して Java 出力リダイレクトの失敗を修正する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 08:10:30130ブラウズ

How to Fix Java Output Redirection Failure Using exec() Method?

Java exec() メソッドの出力リダイレクトの失敗

この問題では、ユーザーが Java のランタイムを使用してシェル スクリプトの出力をリダイレクトしようとします.getRuntime().exec() メソッド。ただし、リダイレクトは失敗し、指定された出力ファイルは作成されません。

指定されたコード スニペットは次のとおりです。

Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");

通常、このコマンドはスクリプトの出力をファイルにリダイレクトする必要があります。アウト.txt。ただし、この場合、スクリプトがシェルで直接実行された場合は正常に実行されても、出力はリダイレクトされません。

解決策: リダイレクトに ProcessBuilder を使用します

解決策は、Runtime.getRuntime().exec() の代わりに ProcessBuilder を利用することです。 ProcessBuilder は、プロセス作成の制御を強化し、入力、出力、およびエラー ストリームの明示的なリダイレクトを可能にします。

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 は、標準出力ストリームとエラー ストリームの両方をファイル out.txt にリダイレクトするように作成および構成されます。次に、start() メソッドを使用してプロセスが作成され、問題がある場合は IOException がスローされる可能性があります。

ProcessBuilder を利用することで、出力リダイレクトを明示的に管理でき、問題を解決できます。

以上がexec() メソッドを使用して Java 出力リダイレクトの失敗を修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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