我使用下面的代碼從標準的命令行上讀取的SQL語句:有沒有辦法有時需要來自stdin的數據,有時不需要Java?
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()
塊。有沒有辦法重寫這段代碼,以便它可以在沒有管道輸入的情況下運行?
更新:該應用程序設計用於期望來自命令行而不是來自鍵盤的管道數據。
Stdin代表控制檯。你怎麼知道用戶是否要輸入或不輸入? – 2012-04-25 17:12:01
感謝彼得 - 更新了這個問題來澄清。 – 2012-05-17 18:18:35
在這種情況下,in.readLine()只會在等待來自文件系統的數據時阻塞。這應該是非常短的(大約10毫秒)我的文件系統非常慢,這似乎阻止了大部分時間,但實際上它正在處理一些數據並重復等待磁盤。 – 2012-05-17 18:23:46