问题
2011年7月11日星期一 上午3:37
C# 如何强制删除文件
特别是文件被占用的情况下。
Healthy
全部回复 (7)
2011年7月12日星期二 上午2:26 ✅已答复
你好!
强制杀死占用的进程,然后再删除。
这里会有一个问题就是你需要是确定文件是被哪一个进程占用,你可以查查有不有现成的函数支持这样的功能。如果没有自己就需要定义一个文件类型与进程的关系。比如 word 文件对应的就是 word.exe 进程。
知识改变命运,奋斗成就人生!
2011年7月13日星期三 上午7:06 ✅已答复 | 1 票
你好!你可能对命令行的参数理解错了,/F 参数是指强制删除只读文件,并非解决占用问题。你上面的示例中因为是文件类型的文件,你用一般以文本编辑器打开这个文件实际上打开后马上就释放了,不存在占用的问题,所以你会成功。你可以尝试运行一个 exe 文件,再尝试删除这个正在运行的 exe。
知识改变命运,奋斗成就人生!
哎呀,多谢提醒哦!
肖版主,您说得对!
必须先关闭进程,补充代码如下:
File.WriteAllText("C:\dele.bat", "@echo \n del /f /q C:\vb.exe"); //创建一个bat文件
Process.GetProcessesByName("VB")[0].Kill();
Process.Start("C:\dele.bat"); //启动文件删除
Console.WriteLine("OK");
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处
2011年7月12日星期二 上午6:07
C# 如何强制删除文件
特别是文件被占用的情况下。
Healthy
还有一个好办法——不要忘记,DOS下del命令是即便文件在使用,照样可以删除的哦!
因此设法使用C#调用DOS命令即可。
比如:
File.WriteAllText("C:\dele.bat", "@echo \n del /f /q C:\Regx.xml"); //创建一个bat文件
Process.Start("C:\dele.bat"); //启动文件删除
Console.WriteLine("OK");
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处
2011年7月12日星期二 上午8:01
C# 如何强制删除文件
特别是文件被占用的情况下。
Healthy
还有一个好办法——不要忘记,DOS下del命令是即便文件在使用,照样可以删除的哦!
因此设法使用C#调用DOS命令即可。
比如:
File.WriteAllText("C:\dele.bat", "@echo \n del /f /q C:\Regx.xml"); //创建一个bat文件
Process.Start("C:\dele.bat"); //启动文件删除
Console.WriteLine("OK");如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处
这样是不能删除的吧?你确认一下知识改变命运,奋斗成就人生!
2011年7月12日星期二 下午6:17
Check which processes are opening this file, create a remote thread and force to close the handle, then delete the file.
2011年7月13日星期三 上午5:10
这样是不能删除的吧?你确认一下 知识改变命运,奋斗成就人生!
完全可以啊,请君尝试。
使用这个不必检测进程,直接可以删除打开的文件。我打开了这个文件,然后运行我的代码,照样删除了!
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处
2011年7月13日星期三 上午7:00 | 1 票
这样是不能删除的吧?你确认一下 知识改变命运,奋斗成就人生!
完全可以啊,请君尝试。
使用这个不必检测进程,直接可以删除打开的文件。我打开了这个文件,然后运行我的代码,照样删除了!
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处
你好!
你可能对命令行的参数理解错了,/F 参数是指强制删除只读文件,并非解决占用问题。你上面的示例中因为是文件类型的文件,你用一般以文本编辑器打开这个文件实际上打开后马上就释放了,不存在占用的问题,所以你会成功。你可以尝试运行一个 exe 文件,再尝试删除这个正在运行的 exe。
知识改变命运,奋斗成就人生!