【发布时间】:2013-07-22 01:44:29
【问题描述】:
我的目标是删除给定文件夹中的所有文件,但不删除文件夹本身。我正在考虑调用FindFirstFile,然后重复调用FindNextFile,同时使用以下伪代码删除找到的每个文件:
if(FindFirstFile(FindFileData))
{
do
{
DeleteFile(FindFileData.FileName);
}
while(FindNextFile(FindFileData));
FindClose(FindFileData); //EDIT for people who didn't see my pseudo-code remark
}
但现在我在想,是否允许我在该文件夹中进行枚举时删除文件?或者换句话说,我需要先缓存所有找到的文件名然后删除它们,还是像我上面显示的那样做?
【问题讨论】:
-
你为什么不测试一下,看看它是否有效?
-
@sashoalm:对我来说,询问其他人是否遇到它更容易。
-
为什么不使用 DeleteFile 文档中提到的msdn.microsoft.com/en-us/library/bb762164%28v=vs.85%29.aspx?
-
我认为您对
FindFirstFile的错误处理是错误的。如果出现错误,它会返回INVALID_HANDLE_VALUE,即-1 - 因此您的if分支将被输入。 -
@enhzflep:运行成功的测试并不意味着代码结构正确。这就是我要在这里建立的。