【发布时间】:2015-03-23 17:14:49
【问题描述】:
我使用自定义 .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 的使用问题,以便我可以从任何随机目录中读取文件吗?
附:我正在使用多字节字符集。
【问题讨论】:
-
无关:尽可能使用完整路径。获取应用程序目录,然后将
"data\*.HMD" 连接到该目录。 -
However, this one failed.以什么方式失败? -
@PaulMcKenzie 读取文件名失败。 'bWorking' 返回
finder.FindNextFile()返回false -
@Golazo,由于您使用的是 Visual Studio,因此您没有收到任何关于字符串包含无法识别的字符序列的警告?更具体地说,
C4129? -
@Golazo: Global Variables are Bad 和 CWD(实际上)是一个全局变量。
标签: c++ file winapi visual-c++ mfc