:標準入力からデータを必要とすることがありますが、時にはJavaでデータを要求しないことがありますか?私は、コマンドラインで標準入力からSQL文を読むために以下のコードを使用しています
BufferedReader in = null;
StringBuilder sb = new StringBuilder();
String line = null;
try {
in = new BufferedReader(new InputStreamReader(System.in));
while((line = in.readLine()) != null) {
sb.append(line);
}
} finally {
if (in!=null) in.close();
}
私の問題は、アプリケーションが時々いない(なしパイプによる入力)標準入力からデータを時々実行する必要があり、ということです。上記のコードに入力がない場合、in.readLine()
ブロック。何もパイプされていない場合でも実行できるように、このコードを書き換える方法はありますか?
更新:アプリケーションは、キーボードからではなく、コマンドラインからパイプされたデータを期待するように設計されています。
標準入力はコンソールを表します。ユーザーが何かを入力するかどうかは、どのようにして知ることができますか? –
感謝のピーター - 明確にするために質問を更新しました。 –
その場合、in.readLine()はファイルシステムからのデータを待っている間のみブロックします。これは非常に短くなければなりません(約10ミリ秒)私はあなたのファイルシステムが非常に遅いです、これはほとんどの時間をブロックしているように見えるかもしれませんが、実際にはデータを処理してディスクを繰り返し待っています。 –