Ido是一个删除目录的所有.tmp文件的Windows服务。我使用FindFirstFile函数并执行此操作:
BOOL cleanPath(){
HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATA FindFileData;
DWORD dwError;
hFind = FindFirstFile(strcat(getDirectoryToClean(), "\\*.tmp"), &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
logError("Invalid file handle");
return (-1);
}
else
{
printf("first file %s\n", FindFileData.cFileName);
DeleteFile(strcat(strcat(getDirectoryToClean(), "\\"), FindFileData.cFileName));
// List all the other files in the directory.
while (FindNextFile(hFind, &FindFileData) != 0)
{
logInfo("deleting file");
printf(" %s\n",FindFileData.cFileName);
DeleteFile(strcat(strcat(getDirectoryToClean(), "\\"), FindFileData.cFileName));
}
dwError = GetLastError();
FindClose(hFind);
if (dwError != ERROR_NO_MORE_FILES)
{
printf("FindNextFile error. Error is %u.\n", dwError);
return (-1);
}
}
}
问题是FindNextFile循环上的文件被删除没有问题但是第一个DeleteFile没有删除我找到的第一个文件...我不知道为什么,这是我第一次使用windows c开发所以也许我错过了东西。
答案 0 :(得分:0)
FindFirstFile()API返回的第一个文件是当前目录(。),由于它不是空的,因此无法删除,因此您收到此错误。
所以你应该检查一下你的文件是不是"。"然后只调用DeleteFile()