目录删除 MFC 的问题

Problems with directory deletion MFC

本文关键字:问题 MFC 删除      更新时间:2023-10-16

我正在做一个 mfc 程序,其中我创建了一个目录来存储 dicom 图像

CreateDirectory(Directory_name,NULL);

并成功创建了文件夹, 之后,我使用这个dicom图像文件夹来执行体积渲染,它也运行良好。

之后,当我尝试删除包括dicom文件在内的目录时,除了我提供给体积渲染过程的文件夹的最后一个dicom文件外,所有内容都将被删除。 这是什么概念? 如何删除它?

在 Windows 下,您无法在文件打开时将其删除。

如果您直接使用 Windows 函数,特别是使用CreateFile打开文件,您可以将FILE_FLAG_DELETE_ON_CLOSE传递给(显然足够(在关闭每个文件后立即将其删除。

如果(更有可能(您几乎使用任何其他方式打开文件(iostreams,FILE *s,CFile等(,那么您几乎会陷入这样一个事实,即您需要关闭文件才能删除它们。如果文件在子进程中打开,通常需要等待该进程完成并关闭文件,然后再尝试删除文件。

同样,您的选项在某种程度上取决于您如何创建子进程。如果直接调用CreateProcess,则会获得子进程的句柄。当子进程退出时,该句柄将发出信号,因此您可以在句柄上执行类似WaitForSingleObject的操作,当它返回成功时,您知道子进程已退出。不过,大多数其他生成子项的方法至少需要稍微多一点的迂回方法(而且,与打开文件一样,使用其他方法比直接调用CreateProcess更常见 - 这是可以理解的,因为直接使用CreateProcess可能会有点痛苦(。