移动锁定的文件

时间:2012-04-12 09:06:47

标签: c#

我正在尝试移动(File.Move)锁定.dll文件以执行应用程序更新。 File.Move方法执行时没有异常。但文件没有被移动。我的意思是在执行File.Move方法后,我有两个相同文件的副本:在目标文件夹和源文件夹中。这是代码:)

File.Move(fileName, newFileName);

有人可以解释一下这个原因吗?

3 个答案:

答案 0 :(得分:7)

File.Move跨卷按顺序执行两个操作:

  1. 文件复制
  2. 文件删除
  3. 似乎第一个成功,第二个无声地失败。结果如预期。

    请注意:http://msdn.microsoft.com/en-us/library/system.io.file.move.aspx

      

    如果您尝试跨磁盘卷移动文件并且该文件正在使用中,则该文件将复制到目标但不会从源中删除。

答案 1 :(得分:0)

通常在这种情况下,你要么有一个单独的更新过程,不需要任何应用程序DLL,所以你产生更新程序,它可以移动它喜欢的一切,更新,并重新启动应用程序。

或者,与安装程序一样,您可以在下次重新启动时提交文件更改。

答案 2 :(得分:0)

File.Move方法会首先将文件fileName复制到文件“newFileName”。第一步成功后,它将删除文件“fileName”。

现在,如果文件“fileName”已经打开/锁定,则无法删除该文件。