删除目录中的图像文件(可能由另一个进程使用)

时间:2009-08-10 20:13:03

标签: vb.net

如何删除目录中其他进程可能正在使用的图像文件(ex * .gif)?

3 个答案:

答案 0 :(得分:1)

您无法删除它,而另一个进程正在使用它。这来自Windows的低级文件处理。但是,您可以使用重命名文件或将其设置为在下次启动时删除。

Process Explorer工具可以帮助您找到正在使用该文件的进程,并且它可以实际关闭句柄 - 给定正确/管理权限。因此可以使用API​​调用,但强制关闭文件句柄会导致该过程出现不可预测的行为。

答案 1 :(得分:0)

如果您无法删除它,您可能可以重命名它,但我不确定为什么某些锁定的文件可以重命名而其他文件不能重命名。

您还可以使用带有空目标的MoveFileEx和MOVEFILE_DELAY_UNTIL_REBOOT标志安排在下次启动时删除它:
http://msdn.microsoft.com/en-us/library/aa365240(VS.85).aspx
http://www.pinvoke.net/default.aspx/kernel32/MoveFileEx.html
http://www.pinvoke.net/default.aspx/Enums/MoveFileFlags.html

答案 2 :(得分:0)

如果您使用My.Computer.FileSystem.DeleteFile,则可以通知用户如果另一个程序正在使用该文件,该文件已被锁定的程序。如果正在使用它,则无法删除。

Try
   My.Computer.FileSystem.DeleteFile("C:\Documents and Settings\anybody\Desktop\dummy.doc", _
                                     FileIO.UIOption.AllDialogs, _
                                     FileIO.RecycleOption.DeletePermanently, _
                                     FileIO.UICancelOption.ThrowException)
Catch ex As System.IO.IOException
   Console.WriteLine(ex.ToString())
End Try