什麼是最好的方式來檢查添加到目錄中的新文件,我不認爲文件系統監視器是合適的,因爲這不是一個永遠在線的服務,而是一個當我的程序啓動時運行的方法。目錄監控
我正在監視的文件夾結構中有超過20,000個文件,目前我正逐個檢查每個文件以查看文件路徑是否在我的數據庫表中,但這大約需要十分鐘,我想加快它
我可以存儲上次檢查文件夾的日期 - 是否容易得到具有createddate>上次檢查日期的所有文件。
任何人有任何想法?
感謝
馬克
什麼是最好的方式來檢查添加到目錄中的新文件,我不認爲文件系統監視器是合適的,因爲這不是一個永遠在線的服務,而是一個當我的程序啓動時運行的方法。目錄監控
我正在監視的文件夾結構中有超過20,000個文件,目前我正逐個檢查每個文件以查看文件路徑是否在我的數據庫表中,但這大約需要十分鐘,我想加快它
我可以存儲上次檢查文件夾的日期 - 是否容易得到具有createddate>上次檢查日期的所有文件。
任何人有任何想法?
感謝
馬克
您的方法是唯一可行的(即文件系統監視器允許您查看更改,而不是檢查啓動)。
找出需要這麼長時間。 20.000次檢查不應花費10分鐘 - 最多1次。你的程序寫得很慢。你如何測試它?
提示:不要問數據庫,獲取所有文件列表到內存中,數據庫中所有文件的列表,檢查內存。 20.000到數據庫的SQL語句太慢了,這樣你需要ONE來獲取列表。
提示tomtom歡呼,你說得對我的程序調用每個文件的數據庫,當然我可以重構一個區域。 – foz1284 2010-05-08 09:09:03
對於20,000個文件,10分鐘似乎非常長。你如何進行比較?您的建議也不會考慮刪除的文件。如果你想從數據庫中刪除那些,你將不得不做一個完整的比較。
也許問題是數據庫往返旅行。您可以從數據庫中以大塊(或全部一次)檢索已知文件列表,並按字母順序排序。對本地文件列表進行排序,然後走兩個列表,隨時處理缺失或新條目。
有如Kevin Jones所說的FileSystemWatcher服務可能是最實用的答案,但還有其他一些選擇。
如果您在Linux機器上安裝Samba,可以使用inotify觀察目錄。這當然假設你不介意分割你的平臺,但這就是通知的目的。
然後更正確,但你得到一個反超的相應較少的機會,如果你坐在監控的目錄,在它的文件20K它可能是時間去發展你的系統架構。不瞭解所有關於應用程序的更多信息,這聽起來像是一個消息隊列可能值得關注。
其圖片管理型應用程序,以便結構僅僅是My Pictures文件夾,如thorrarin說,有這個程序,它可能只零星地運行服務運行似乎矯枉過正 – foz1284 2010-05-08 09:32:01
可以在某處onfile創建的最後一個時間戳寫的,很簡單,可以爲你工作。
這是一個有趣的問題。我不知道如何跟蹤目錄的更改,而無需駐留內存的程序來註冊這些事件。 (順便說一句,這些觀察者也有其侷限性)。您可能必須重新掃描目錄樹(啓動時,定期,每當),唯一的問題是如何儘可能快速高效地完成目錄樹。 – 2010-05-08 08:59:31