2012-04-12 17 views
1

アプリケーションの更新を実行するために、ロックされた.dllファイルを(File.Move)移動しようとしています。 File.Moveメソッドは例外なく実行されました。しかしファイルは動かされませんでした。私は、File.Moveメソッドを実行した後、同じファイルの2つのコピーを持っていることを意味します。コピー先フォルダとコピー元フォルダです。コードは次のとおりです。ロックされたファイルを移動する

File.Move(fileName, newFileName); 

誰かがこの理由を説明できますか?

+1

あなたの質問はありますか? – Nick

+0

ファイルが使用中であれば、それを削除することはできません(OSはこれを防止します)...別の動作を期待していますか? – Marco

+0

編集されました。 OSはロックされたファイルを移動することができます –

答えて

7

ボリューム全体File.Moveがシーケンスの2つの操作を実行します。

  1. ファイルコピー
  2. ファイルは

を削除最初は成功し、第二は黙って失敗したかのように思えます。期待どおりの結果。ここから

注:ディスクボリューム間でファイルを移動しようと、そのファイルが使用中の場合http://msdn.microsoft.com/en-us/library/system.io.file.move.aspx

、ファイルが宛先にコピーされますが、ソースから削除されていません。

+0

答えに答える:File.Moveは、ボリューム間でファイルを移動しようとしているときにのみコピーと削除を実行します。 Else File.Moveはファイルメタデータを更新するだけです(ロックされたファイルを移動することができるため)。 –

+0

これはボリューム間で移動されていますか?それをすべて説明します。 – yamen

0

通常、この場合、アプリケーションDLLを必要としないアップデートプロセスがありますので、好きなものをすべて移動してアップデートを実行し、アプリケーションを再起動できるようにします。

インストーラのように、次回の再起動時にファイルの変更をoccurrに送信します。

0

File.Moveメソッドは、ファイルfileNameを先にファイル 'newFileName'にコピーします。最初の手順が成功すると、ファイル 'fileName'が削除されます。

ファイル 'fileName'が既に開いている/ロックされている場合、ファイルを削除することはできません。

関連する問題