13

CSVreader 用の Junit テスト ファイルを作成しています。CSV ファイルの内容を読み取り、その内容を別のファイルに書き込んでいます。diff ユーティリティを使用してそれらを比較したいのですが、diff の終了ステータスを使用して内容が同じかどうかを知りたいです。一般的に$?終了ステータスが表示されますが、それをキャプチャしてコードで使用する方法がわかりません。この点で誰かが私を助けることができますか?

これが私のコードの外観です

 boolean hasSameContents = false;

    command="diff "+mp.get("directory")+"/"+fileName+" "+mp.get("outdir")+"/"+fileName;
    p= Runtime.getRuntime().exec(command);
    p.waitFor();

この後、終了ステータスを取得して、このようなif条件で使用したい

 if(exit_status==0)
     hasSameContents = true;
  else
     hasSameContents = false;

代替提案でさえ感謝します。:)

4

4 に答える 4

29

Process#exitValueを探しています

String command = "diff "+mp.get("directory")+"/"+fileName+" "+mp.get("outdir")+"/"+fileName;
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
int exitStatus = p.exitValue();

InputStream気にしなくても、出力バッファが読み取られるまで一部のプロセスがチョークする (終了しない) 場合でも、の内容を読み取る必要があることを忘れないでください...

于 2012-10-15T09:26:31.820 に答える
5

ProcessBuilderclass を使用してProcessオブジェクトを作成してみると、exitValue()役立つはずです。

于 2012-10-15T09:27:38.917 に答える
2

Runtime.exec()そして友人は、終了コードを返すメソッドProcessを持つオブジェクトを返します。exitValue()

于 2012-10-15T09:28:41.840 に答える
2

クラス Process のメソッドwaitFor() を使用します。プロセスの戻り値である int を返します。

于 2012-10-15T09:26:59.350 に答える