【问题标题】:Delete a file in use in runtime删除运行时使用的文件
【发布时间】:2008-11-19 06:37:01
【问题描述】:

如何删除运行时某个进程正在使用/打开的文件。 我在我的项目中使用 vb.net,图片显示在图片框中, 并且应该在不关闭该文件的情况下将其删除。

【问题讨论】:

标签: windows file


【解决方案1】:

如果文件是由另一个进程以独占模式打开的,你不能——Windows 不会让你这样做。在这种情况下,您可以做的最好的事情是等待其他进程关闭文件然后将其删除,或者在下次重新启动时使用带有标志MOVEFILE_DELAY_UNTIL_REBOOT 和目标位置的MoveFileEx() 将其删除NULL.

如果文件被另一个进程非独占打开,你可以正常调用DeleteFile()(假设你有权限这样做)。该文件将在其他进程打开时保留,但在其他进程关闭时将立即删除。

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

【讨论】:

    【解决方案2】:
    【解决方案3】:

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

    但是,根据您的描述,您不需要在应用程序中保持文件打开。打开文件,读取图像,然后关闭文件。然后可以删除文件,但应用程序仍然有图像数据。

    【讨论】:

      【解决方案4】:

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

      要关闭进程,您可以执行以下操作:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        相关资源
        最近更新 更多