为什么我无法删除FindFirstFile的第一个文件

时间:2014-03-23 17:53:20

标签: visual-c++

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开发所以也许我错过了东西。

1 个答案:

答案 0 :(得分:0)

FindFirstFile()API返回的第一个文件是当前目录(。),由于它不是空的,因此无法删除,因此您收到此错误。

所以你应该检查一下你的文件是不是"。"然后只调用DeleteFile()