我的目标是删除给定文件夹中的所有文件,但不删除文件夹本身。我正在考虑调用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
}
但是现在我在想,如果我允许在该文件夹中进行枚举时删除文件?或者换句话说,我是否需要首先缓存找到的所有文件名然后将其删除,或者如上所示,是否可以执行此操作?
答案 0 :(得分:2)
是的,您可以使用遍历安全地从文件夹中删除文件 在这些方面,当然提供了API和逻辑细节 对(例如Frerich Raabe的评论)。
因此,您的FindFirstFile
会初始化WIN32_FIND_DATA
结构
而你的FindNextFile
将引用相同的结构
它的寻路目的。只要你不腐败它
你可以随时删除文件。
答案 1 :(得分:1)
FindFirstFile返回一个句柄,如果它有效,应该使用FindClose释放。