File.Copy() 给出 system.IO.IOException: 该进程无法访问该文件..因为它正在被另一个进程使用。例外

sho*_*oab 5 .net file-copying

我在我的 asp.Net 应用程序中使用 File.Copy(..,..) 方法,它向我显示 system.IO.IOException: 该进程无法访问该文件..因为它正在被另一个进程使用。

任何解决办法

提前致谢

Sim*_*n S 3

您必须 a) 停止正在使用该文件的进程,或者 b) 等待该文件不再被使用。

您应该阅读有关文件锁定的维基百科条目。请特别注意“在 Microsoft Windows 中”段落,您将更好地了解文件锁定的工作原理。

如果另一个程序打开了该文件,并且共享模式参数表明该文件即使进行读访问也不会共享,那么您实际上无法执行任何操作来强制应用程序执行复制操作。

如果您热衷于“扮演上帝”,并且愿意杀死可能锁定您所关心的文件的进程,那么您可以尝试使用此中的信息找出哪个进程正在锁定您的文件thread:如何找出哪个进程正在使用 .NET 锁定文件?

更好的策略可能是调查您正在复制的文件被锁定的原因,以及是否可以通过对文件设置限制性文件权限或重新配置竞争的软件来避免锁定冲突。文件上的锁。例如,如果防病毒程序偶尔扫描您的应用程序使用的文件夹结构,那么您也许可以告诉软件忽略该特定文件夹。

如果执行时间并不重要,您也许可以延迟或推迟复制操作。一个简单的策略是在下一次迭代中获取锁定的文件。另一种策略可能涉及监听事件,例如来自FileSystemWatcher类的事件,其想法是等待直到文件在 .NET 中解锁