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#检测文件正在被那个进程占用

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7011568.html ,如需转载请自行联系原作者


相关文章
C#编程-32:复制移动删除文件或文件夹
C#编程-32:复制移动删除文件或文件夹
213 0
|
C#
[C#]使用CMD命令删除文件函数
[C#]使用CMD命令删除文件函数,System.Diagnostics.Process
3626 0
|
C# JavaScript
C#实现多文件上传,写到文件夹中,获取文件信息以及下载文件和删除文件
前台:.js //上传附件 function uploadAttachment() { if ($("#Tipbind").attr('checked')) { var ip = $("#TunBandIP").
1436 0
|
JSON 前端开发 C#
C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)
之前做项目的时候要用到上传文件的功能,现在我总结一下,上传文件和删除文件的代码,在以后的使用的过程中也更方便查找。 [HttpPost] public ActionResult EditUser() { var userDal = ne...
861 0
c# 删除文件
引用:http://www.cnblogs.com/wggWeb/archive/2012/02/23/2364521.html 1这是最简单的方法         DirectoryInfo di = new DirectoryInfo(string Path);         di.
1018 0
|
9月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
392 19
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
445 3
|
10月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
2189 0
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
1494 12