为什么FindNextFile& FindFirstFile在开始时打印这两个奇怪的字符串?

时间:2016-06-23 22:45:57

标签: c++ winapi search directory

以下是该计划:

#include <stdio.h>
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{

    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;

    const char c[] = "C:\\Users\\*.*";

    hFind = FindFirstFile(c, &FindFileData);

    if (hFind == INVALID_HANDLE_VALUE)
    {
        printf("FindFirstFile failed (%d)\n", GetLastError());
        return 1;
    }
    else
    {
        cout << "The first file found is " << FindFileData.cFileName << endl;
    }

    for (int i = 0; i < 12; i++)
    {
        if (!FindNextFile(hFind, &FindFileData))
        {
            printf("FindNextFile failed (%d)\n", GetLastError());
        }
        else
        {
            cout << "The next file found is " << FindFileData.cFileName << endl;
        }
    }

    FindClose(hFind);
    return 0;

}

打印出来:

enter image description here

无论我转到哪个目录,它总是用文件打印前两行。和..?那是为什么?

2 个答案:

答案 0 :(得分:4)

所有目录都包含这些目录。

&#39;。&#39;和&#39; ..&#39;有特殊意义......如果你不需要它们,那就干掉吧。

示例:来自Linux

dmn@DM5:~$ ls -lsa

total 3144
  4 drwxr-xr-x 87 dmn dmn        4096 Jun 23 09:43 .
  4 drwxr-xr-x  5 root  root     4096 Jan  3 08:43 ..
  .... and lots more strings

答案 1 :(得分:2)

这些是特殊的类似linux链接的文件,代表当前和父目录。有关详细信息,请参阅this answer