我們在這裏有一個Windows服務器,有一天我們將通過sftp獲取文件夾中的一些文本文件。我沒有更多的信息,但也許這就夠了。現在我應該編寫一個將這些文件移動到另一個文件夾的函數。那麼不應該那麼難,我想......但現在我意識到我能夠在文件完成之前移動一個文件。所以我正在尋找一些解決方案,我真的很困惑。檢查sftp文件傳輸是否完成?
我的解決方案是檢查文件及其周圍的進程。因爲如果文件還沒有完成,就有一個複製過程,我可以檢查這個過程。爲了簡單起見,我只需要嘗試鎖定文件,如果沒有其他進程,那麼文件已準備好移動?
using (File.Open("myFile", FileMode.Open, FileAccess.Read, FileShare.None))
{ /*rdy!*/ }
但現在我看到人們正在寫一些關於校驗和測試或測試文件大小,如果文件大小不隨後更改文件已準備就緒。這東西不是有點複雜嗎?請告訴我,我的解決方案也可以工作......我無法用任何服務器測試它到服務器sftp的東西。我只知道,如果我將文件複製到另一個文件夾(通過資源管理器),這是工作。這是否也可以通過sftp傳輸工作?有任何想法嗎?謝謝
嗨,謝謝。 「這隻有在寫入文件的過程也以某種方式打開文件以使其被鎖定時纔有效」 - 這是一個sftp選項,還是某個進程以某種方式打開/打開文件? – sabisabi
在SFTP協議中沒有這樣的選項。它取決於您用作服務器的應用程序以及開發人員如何實現文件打開部分。 –