我正在編寫一個應用程序,通過每隔幾秒輪詢目錄來監視新輸入文件的目錄。新文件通常可能是幾兆字節,因此需要一些時間才能完全到達輸入目錄(例如:從遠程共享複製)。檢測傳輸中的文件?
是否有一種簡單的方法來檢測文件當前是否正在複製過程中?理想情況下,任何方法都可能是平臺和文件系統不可知的,但如果不能滿足不同平臺的特定策略可能會失敗。
我已經考慮過幾秒鐘分隔兩個目錄列表,並比較文件大小,但是這引入了一個時間/可靠性權衡,我的上司不滿意,除非沒有其他選擇。
爲背景,應用程序被寫成一組Matlab的M文件,所以沒有JRE/CLR招數恐怕......
編輯:文件在到達通過直接移動/複製操作直接輸入,無論是從網絡驅動器還是從本地文件系統的其他位置。這種複製操作可能會由用戶而不是其他應用程序啓動。
結果,這是相當困難的放置在文件提供添加控制文件或使用一箇中間臨時區域任何責任......
結論:好像有沒有簡單的方法要做到這一點,所以我已經解決了皮帶和括號的方式 - 一個文件已準備好處理,如果:
- 它的大小並不在一定時間內改變,和
- 可以在只讀模式下打開文件(某些複製進程會對文件進行鎖定)。
感謝大家的迴應!
在我最初的帖子後的近一年,我越來越接近寫一篇題爲「FTP認爲有害」的論文。我在許多所謂的「企業」商店中看到「通過FTP傳輸大文件」的反模式,這讓我非常震驚。我確信它回到了通過在機器之間攜帶磁帶來實現應用程序之間的通信的時代 - 而且還沒有人對「我們一直這樣做」的呼聲提出質疑。 – 2010-09-29 12:56:07