none
C# 如何强制删除文件 RRS feed

答案

  • 你好!你可能对命令行的参数理解错了,/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;或者讨论(Talk)
    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)
    慈善点击,点击此处
    • 已标记为答案 Paul Zhou 2011年7月18日 9:46
    2011年7月13日 7:06
    版主
  • 你好!

    强制杀死占用的进程,然后再删除。

    这里会有一个问题就是你需要是确定文件是被哪一个进程占用,你可以查查有不有现成的函数支持这样的功能。如果没有自己就需要定义一个文件类型与进程的关系。比如 word 文件对应的就是 word.exe 进程。


    知识改变命运,奋斗成就人生!
    • 已标记为答案 Paul Zhou 2011年7月18日 9:46
    2011年7月12日 2:26
    版主

全部回复

  • 你好!

    强制杀死占用的进程,然后再删除。

    这里会有一个问题就是你需要是确定文件是被哪一个进程占用,你可以查查有不有现成的函数支持这样的功能。如果没有自己就需要定义一个文件类型与进程的关系。比如 word 文件对应的就是 word.exe 进程。


    知识改变命运,奋斗成就人生!
    • 已标记为答案 Paul Zhou 2011年7月18日 9:46
    2011年7月12日 2:26
    版主
  • 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;或者讨论(Talk)
    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;或者讨论(Talk)
    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
    版主
  • Check which processes are opening this file, create a remote thread and force to close the handle, then delete the file.

     

    2011年7月12日 18:17
  • 这样是不能删除的吧?你确认一下
    知识改变命运,奋斗成就人生!


    完全可以啊,请君尝试。

    使用这个不必检测进程,直接可以删除打开的文件。我打开了这个文件,然后运行我的代码,照样删除了!


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    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日 5:10
    版主
  • 这样是不能删除的吧?你确认一下
    知识改变命运,奋斗成就人生!


    完全可以啊,请君尝试。

    使用这个不必检测进程,直接可以删除打开的文件。我打开了这个文件,然后运行我的代码,照样删除了!


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    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。


    知识改变命运,奋斗成就人生!
    2011年7月13日 7:00
    版主
  • 你好!你可能对命令行的参数理解错了,/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;或者讨论(Talk)
    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)
    慈善点击,点击此处
    • 已标记为答案 Paul Zhou 2011年7月18日 9:46
    2011年7月13日 7:06
    版主