【问题标题】:Locked directory and getting FileNotFoundException during File.Copy在 File.Copy 期间锁定目录并获取 FileNotFoundException
【发布时间】:2017-06-30 12:20:02
【问题描述】:

我正在尝试将共享文件复制到本地副本:

File.Copy("\\sharedmachine\directory\file.exe", "\\localmachine\directory\file.exe", true);

源文件存在,但如果另一个用户/机器在“Windows 资源管理器”中打开目录,则此操作锁定并且在复制期间我得到一个System.IO.FileNotFoundException

即使有人在另一台机器上打开目录,也有一些方法可以复制文件?

谢谢

【问题讨论】:

标签: c# .net visual-studio filenotfoundexception


【解决方案1】:

以只读方式打开文件,然后将其写入目的地,这样访问该文件的应用程序就不会被阻止。

using (var from = File.Open("sourcePath", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (var to = File.OpenWrite("destPath"))
    {
        from.CopyTo(to);
    }

【讨论】:

  • 也许提供一些细节,说明您为什么认为您的代码是正确的,或者您的代码解决了什么问题而 OP 没有解决。
  • @AnthonyHorne 你不认为代码是自我解释的吗?
  • 对我来说,但对 3 分的 OP 来说可能不是。添加一行注释以说明您正在以只读方式打开文件,然后将其写入目标位置,以便访问该文件的应用程序不会被阻止 - 将有助于其他人理解。这是你的答案,你应该提供最好的答案来推动整个社区与你一起前进。
  • @AnthonyHorne 同意。添加了您的解释:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2021-05-30
  • 2013-03-10
  • 1970-01-01
  • 2019-03-09
相关资源
最近更新 更多