优化使用 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"
我使用自定义 .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"