删除运行时使用的文件

时间:2008-11-19 06:37:01

标签: windows file

如何在运行时删除某个进程正在使用/打开的文件。 我正在使用vb.net进行我的项目,图像显示在picturebox中, 这应该删除,而不关闭该文件。

4 个答案:

答案 0 :(得分:2)

如果文件是由独占模式的其他进程打开的,则不能 - Windows不会让你。在这种情况下,您可以做的最好的事情是等待其他进程关闭文件然后将其删除,或者使用带有标记MOVEFILE_DELAY_UNTIL_REBOOT的{​​{3}}在下次重新启动时将其删除和目的地位置NULL

如果文件是由其他进程非独占打开的,则可以正常调用MoveFileEx()(假设您有权这样做)。该文件将在其他进程打开时保留,但只要其他进程关闭它就会被删除。

(是的,我意识到这些链接适用于Win32 C API;在VB .NET下应该可以使用相同的功能)

答案 1 :(得分:1)

答案 2 :(得分:0)

我不认为这是可能的。在Windows上,您无法删除具有打开句柄的文件。 http://support.microsoft.com/kb/320081

但是,根据您的描述,您无需在应用程序中保持文件处于打开状态。打开文件,读取图像然后关闭文件。然后可以删除该文件,但应用程序仍将具有图像数据。

答案 3 :(得分:0)

您可以关闭进程,然后将其删除,或者在重新启动时删除。 使用上述建议获取有关在Windows中使用MoveFileEx()的信息。

要关闭某个流程,您可以执行以下操作:

For Each proc As Process In System.Diagnostics.Process.GetProcessesByName("process name here")
proc.Kill()
Next