C# 如何强制删除文件

问题

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。

知识改变命运,奋斗成就人生!