精简使用MFC FindFile API失败

时间:2015-03-23 17:14:50

标签: c++ file winapi visual-c++ mfc

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

我偶然发现了CFindFile级的MFC。我在项目路径中添加了一堆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。我正在使用MultiByte字符集。

1 个答案:

答案 0 :(得分:5)

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

"data\*.HMD"

使用

"data\\*.HMD"