我正在尝试使用FindFirstFile来检查模式后是否存在某些文件,但是通配符*似乎无法代表目录。

int main()
{
  WIN32_FIND_DATAW findFileData;
  wchar_t path[] = LR"(.\*\*.txt)";
  HANDLE hFind = FindFirstFileW(path, &findFileData);

  if(hFind != INVALID_HANDLE_VALUE)
  {
    do
    {
      printf("%S\n", findFileData.cFileName);
    } while (FindNextFileW(hFind, &findFileData));
  }
}

有了这棵树,什么也不会打印:
.
|- foo
|  |- some.txt
|
|- bar
|  |- another.txt

为什么会有这个限制?是否存在解决方法?

最佳答案

只能在最后路径分隔符之后的文件名部分使用通配符。 documentation确实对此进行了解释。它说:



如果要搜索多个目录,则需要显式实现该嵌套或递归迭代。

10-04 20:49