2017-04-24 4 views
0

私はJavaプログラムを介してgrepコマンドを実行しています。コマンドラインでgrepを実行すると、stderrに種別:No such file or directoryというエラーが書き込まれることがあります。このエラーがプログラムを介してgrepコマンドを実行した結果として発生するたびに、Javaプログラムで検出したいと思います。どうすればこの目標を達成できますか?これまでに書いたことは次のとおりです。Javaからgrepコマンドを実行した後にエラーを取得する

Runtime rt = Runtime.getRuntime(); 
    String[] cmd = {"/bin/sh", "-c", "grep -c 'Search_String' /path/to/file(s)/being/searched"}; 
    Process proc = rt.exec(cmd); 
    BufferedReader is = new BufferedReader(new 
    InputStreamReader(proc.getInputStream())); 
    String line; 
    while ((line = is.readLine()) != null) { 
     System.out.println(line); 
    } 
+1

grepに渡す前にファイルが存在することを確認できないのはなぜですか? –

+1

exitValueを確認します。 Grepは成功のために0を返します。ゼロ以外の値を返す場合は、出力を解析する必要があります。 – Dakoda

+0

@JoeC私はチェックできますが、たくさんのファイルに対してコマンドを実行しようとすると、これでより快適になります –

答えて

1

プロセスがエラーで戻ったかどうかを検出できます。 @Dakodaは言及したように、プロセスが終了するまで、exitValue()は終了値を持っていないであろうが、プロセスは終了値を終了して戻るまでwaitFor()を使用してブロックします:

int rv = rt.waitFor(); 
if (rv != 0) { ... } 

エラー出力は、stderrなくstdoutに通常あなたが使用するエラーを読むには:

BufferedReader is = new BufferedReader(
    new InputStreamReader(proc.getErrorStream())); 
関連する問題