我試圖移動(File.Move)鎖定.dll文件來執行應用程序更新。 File.Move方法執行無例外。但文件沒有移動。我的意思是在執行File.Move方法後,我有兩個相同文件的副本:在目標文件夾和源文件夾中。這裏是代碼:)移動鎖定的文件
File.Move(fileName, newFileName);
有人可以解釋這個原因嗎?
我試圖移動(File.Move)鎖定.dll文件來執行應用程序更新。 File.Move方法執行無例外。但文件沒有移動。我的意思是在執行File.Move方法後,我有兩個相同文件的副本:在目標文件夾和源文件夾中。這裏是代碼:)移動鎖定的文件
File.Move(fileName, newFileName);
有人可以解釋這個原因嗎?
跨卷File.Move按順序執行兩個操作:
它好像第一個成功和第二默默地失敗。結果如預期。從這裏
注:http://msdn.microsoft.com/en-us/library/system.io.file.move.aspx
如果您嘗試移動跨磁盤卷文件和文件正在使用中,將文件複製到目標,但沒有從源中刪除。
一些要回答的註釋:只有當我們嘗試跨卷移動文件時,File.Move纔會執行「複製」和「刪除」。否則File.Move只會更新文件元數據(因爲可以移動鎖定的文件)。 – 2012-04-12 09:23:22
那麼這是跨越卷?會解釋一切。 – yamen 2012-04-12 09:41:05
通常在這種情況下,你要麼有,這並不需要任何的應用程序的DLL,所以你釀出更新,它可以移動它喜歡的一切,做了更新,並重新啓動應用程序獨立的更新過程。
或者像安裝程序一樣,在下次重新啓動時將文件更改提交給發生器。
File.Move
方法將首先將文件fileName
複製到文件'newFileName
'。一旦第一步成功,它將刪除文件'fileName
'。
現在如果文件'fileName
'已經打開/鎖定,它將無法刪除文件。
你的問題是什麼? – Nick 2012-04-12 09:09:02
如果文件正在使用中,您不能刪除它(操作系統可以防止這種情況)......您是否期望有不同的行爲? – Marco 2012-04-12 09:10:25
已編輯。操作系統可以移動鎖定的文件 – 2012-04-12 09:11:21