我聯繫外部服務,我的Java應用程序有效的方法。的Java:掃描文件夾中特定文件
流動情況如下: - >我生成一個XML文件,並把它的文件夾中,然後該服務處理文件和眼下後具有延伸.out
同名返回另一個文件我把文件放在文件夾中,我以一個循環開始,直到我得到這個文件,所以我可以讀取結果。
下面是代碼:
fileName += ".out";
File f = new File(fileName);
do
{
f = new File(fileName);
} while (!f.exists());
response = readResponse(fileName); // got the response now read it
我的問題來這裏,我會以正確的方式做,有沒有更好/更有效的方式來等待文件?
一些信息:我跑我在WinXP的應用程序,通常需要外部服務不到一秒鐘與文件作出迴應,我每天發送大約200請求該服務。包含結果文件的文件夾路徑始終相同。
歡迎您提出任何建議。
謝謝你的時間。
爲什麼創作中的每個循環的新File對象的? f的第一個例子應該沒問題。我建議在循環中放置一個Thread.sleep(100) - 這將使繁忙循環不那麼繁忙(每秒10次)。另一個問題是,文件可能沒有完全寫在你看到它出現在目錄中的那一刻。 – Ingo 2011-04-09 08:33:18
謝謝@ingo我還沒有關於該文件沒有完全寫入。 – Adnan 2011-04-09 08:36:23
@Adam,不幸的是,這是一個比人們想象的更陌生的問題 - 所有這些都可能在你的開發人員機器上運行良好,但在「生產」中則完全沒有。操作系統在這裏也起着重要的作用,而Unix會忠實地報告當前的文件大小,Windows可能會報告0或2的冪的倍數,直到文件從另一端真正關閉。在這種情況下一個很好的技巧:讓另一個程序用另一個名字編寫一個文件,並在它關閉時找到它的名字。 – Ingo 2011-04-09 08:40:58