优化使用 MFC FindFile API 失败

Refined use of MFC FindFile API failing

我使用自定义 .HMD 格式对 VC++ MFC 应用程序中的一些数据进行二进制编码。假设一个文件夹中有多个 HMD 文件,我想读取它们的所有文件名。

我偶然发现了 MFC CFindFile class。我将一堆 HMD 文件添加到我的项目路径并尝试了以下代码 -

CFileFind finder;
BOOL bWorking = finder.FindFile(_T("*.HMD"));
while (bWorking)
{
    bWorking = finder.FindNextFile();
    TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
}

此代码有效! TRACE打印出项目路径下的所有HMD文件。

但是,我尝试从一个随机目录执行相同的操作。我只是在项目路径中创建了一个 data 目录并将我所有的 HMD 文件移到那里,然后再次尝试代码如下。

CFileFind finder;
BOOL bWorking = finder.FindFile(_T("data\*.HMD")); // Only change is I added data to path
while (bWorking)
{
    bWorking = finder.FindNextFile();
    TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
}

但是,这个无法读取文件名。 finder.FindNextFile() 返回 false

有人可以告诉我如何修复我对 CFindFile 的使用,以便我可以从任何随机目录读取文件吗?

P.S。我正在使用多字节字符集。

您需要转义反斜杠字符。而不是

"data\*.HMD"

使用

"data\*.HMD"