我在我的asp.Net应用程序中使用File.Copy(..,..)方法,它向我显示system.IO.IOException:进程无法访问该文件..因为它被另一个进程使用。
任何解决方法
提前致谢
答案 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)
答案 2 :(得分:0)
要找出锁定它的进程,您可以尝试http://www.filehippo.com/download_unlocker/