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

时间:2011-04-05 09:23:14

标签: .net file-copying

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

任何解决方法

提前致谢

3 个答案:

答案 0 :(得分:3)

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

您应该在File Locking上阅读此维基百科条目。请特别注意“在Microsoft Windows”一节中,您将更好地了解文件锁定的工作原理。

如果另一个程序使用共享模式参数打开了该文件,表明该文件即使对于读取访问也不会共享,那么您无法真正拥有从你的应用程序强制复制操作。

如果您热衷于“扮演上帝”,并且您愿意杀死可能锁定您所关注文件的进程,那么您可以尝试找出使用该文件保留文件的进程此主题中的信息:How do I find out which process is locking a file using .NET?

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

如果执行时间不重要,您可以延迟或推迟复制操作。一个简单的策略是在下一次迭代中获得锁定文件。另一种策略可能涉及监听事件,例如从FileSystemWatcher课程开始,将想法改为Wait until file is unlocked in .NET

答案 1 :(得分:1)

试试这个

File.Open(name, FileMode.Open, FileAccess.Read, FileShare.None);

查看this链接了解更多详情

答案 2 :(得分:0)

要找出锁定它的进程,您可以尝试http://www.filehippo.com/download_unlocker/