首页 > 代码库 > C# 强制删除文件,解除占用的几点思考
C# 强制删除文件,解除占用的几点思考
有一个古老的传说:
占用的文件是可以被强制删除的。。。
如果被别的应用程序打开着,你就要先找到那个打开的程序,结束掉才行。或者关闭关闭相关进程,延迟的方法。
一般来说被占用就意味着有其它进行或者线程对该文件读或写操作。如果是自己的程序对该文件有文件流读写最好在完成或者异常的时候关闭流Close(),释放流Dispose(),后续才不会提示对此文件有占用;如果不是自己的程序原因引起文件的占用,则要重启一下电脑进行删除,如果仍然提示占用则要结束掉占用此文件的进程,才可以进行删除。
解决方案1
要检测文件被那个进程占用,需要使用微软提供的工具Handle.exe,这里有微软提供的下载
我们可以在c#中调用Handle.exe 来检测到底哪个进程占用了文件
string fileName = @"c:\aaa.doc";//要检查被那个进程占用的文件Process tool = new Process();tool.StartInfo.FileName = "handle.exe";tool.StartInfo.Arguments = fileName+" /accepteula";tool.StartInfo.UseShellExecute = false;tool.StartInfo.RedirectStandardOutput = true;tool.Start(); tool.WaitForExit();string outputTool = tool.StandardOutput.ReadToEnd();string matchPattern = @"(?<=\s+pid:\s+)\b(\d+)\b(?=\s+)";foreach(Match match in Regex.Matches(outputTool, matchPattern)){ Process.GetProcessById(int.Parse(match.Value)).Kill();}
参考文章
winform中,如何强制删除被占用文件
jevan, 使用c#检测文件正在被那个进程占用
C# 强制删除文件,解除占用的几点思考
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。