移动锁定的文件

本文关键字:文件 锁定 移动 | 更新日期: 2023-09-27 18:30:46

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

File.Move(fileName, newFileName);

有人可以解释一下其中的原因吗?

移动锁定的文件

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

  1. 文件复制
  2. 文件删除

似乎第一个成功了,第二个默默地失败了。结果如预期。

此处说明:http://msdn.microsoft.com/en-us/library/system.io.file.move.aspx

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

通常在这种情况下,你要么有一个单独的更新过程,不需要任何应用程序 DLL,因此你生成更新程序,它可以移动它喜欢的所有内容,执行更新,然后重新启动应用程序。

或者,像安装程序一样,您将文件更改提交到下次重新启动时发生者。

File.Move方法将首先将文件fileName复制到文件"newFileName"。一旦第一步成功,它将删除文件' fileName '。

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