目录删除MFC的问题
Problems with directory deletion MFC
我正在做一个 mfc 程序,我在其中使用
创建了一个目录来存储 dicom 图像
CreateDirectory(Directory_name,NULL);
并成功创建文件夹,
之后我用这个文件夹里的dicom图片做了体渲染,效果也不错
在那之后,当我尝试删除包含 dicom 文件的目录时,除我已提供给体积渲染过程的文件夹的最后一个 dicom 文件外,所有内容都被删除。
这是什么概念?
我该如何删除它?
在 Windows 下,您无法删除打开的文件。
如果您直接使用 Windows 函数,特别是使用 CreateFile
打开文件,您可以传递 FILE_FLAG_DELETE_ON_CLOSE
以(显然足够)尽快删除每个文件因为它已关闭。
如果(更有可能)您使用几乎任何其他方式打开文件(iostream
s、FILE *
s、CFile
等),您几乎坚持这样一个事实,即您需要先关闭文件才能删除它们。如果文件在 child 进程中打开,您通常需要等待该进程完成并关闭文件,然后再尝试删除文件。
同样,您的选择在某种程度上取决于您如何创建 child 流程。如果您直接调用 CreateProcess
,您将获得 child 进程的句柄。当 child 进程退出时,该句柄将发出信号,因此您可以在句柄上执行类似 WaitForSingleObject
的操作,当它 returns 成功时,您知道 child 进程已经退出。大多数其他生成 child 的方法至少需要稍微多一些迂回的方法(而且,就像打开文件一样,使用其他方法比直接调用 CreateProcess
更常见——可以理解,因为使用CreateProcess
直接会有点痛)。
我正在做一个 mfc 程序,我在其中使用
创建了一个目录来存储 dicom 图像 CreateDirectory(Directory_name,NULL);
并成功创建文件夹, 之后我用这个文件夹里的dicom图片做了体渲染,效果也不错
在那之后,当我尝试删除包含 dicom 文件的目录时,除我已提供给体积渲染过程的文件夹的最后一个 dicom 文件外,所有内容都被删除。 这是什么概念? 我该如何删除它?
在 Windows 下,您无法删除打开的文件。
如果您直接使用 Windows 函数,特别是使用 CreateFile
打开文件,您可以传递 FILE_FLAG_DELETE_ON_CLOSE
以(显然足够)尽快删除每个文件因为它已关闭。
如果(更有可能)您使用几乎任何其他方式打开文件(iostream
s、FILE *
s、CFile
等),您几乎坚持这样一个事实,即您需要先关闭文件才能删除它们。如果文件在 child 进程中打开,您通常需要等待该进程完成并关闭文件,然后再尝试删除文件。
同样,您的选择在某种程度上取决于您如何创建 child 流程。如果您直接调用 CreateProcess
,您将获得 child 进程的句柄。当 child 进程退出时,该句柄将发出信号,因此您可以在句柄上执行类似 WaitForSingleObject
的操作,当它 returns 成功时,您知道 child 进程已经退出。大多数其他生成 child 的方法至少需要稍微多一些迂回的方法(而且,就像打开文件一样,使用其他方法比直接调用 CreateProcess
更常见——可以理解,因为使用CreateProcess
直接会有点痛)。