4

我的目标是删除给定文件夹中的所有文件,但不删除文件夹本身。我正在考虑调用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
}

但是现在我在想,是否允许我在该文件夹中进行枚举时删除文件?或者换句话说,我是否需要先缓存找到的所有文件名然后删除它们,或者像上面显示的那样可以这样做吗?

4

2 回答 2

2

是的,您可以安全地使用这些行上的遍历从文件夹中删除文件,当然前提是您获得了正确的 API 和逻辑细节(例如 Frerich Raabe 的评论)。

因此,您FindFirstFile将初始化一个WIN32_FIND_DATA结构,并且您FindNextFile将出于寻路目的引用相同的结构。只要您不损坏它,您就可以随时删除文件。

于 2013-07-23T07:34:34.407 回答
1

FindFirstFile 返回一个句柄,如果它有效,应该使用 FindClose 释放它。

于 2014-02-11T12:01:48.500 回答