【发布时间】:2016-12-01 09:11:13
【问题描述】:
我正在尝试以编程方式查找目录中的文件列表,并且我编写了以下代码
CStringArray CCL2ProjectDirectoryPage::GetAllFilesNames()
{
WIN32_FIND_DATA fileData;
memset(&fileData, 0, sizeof(WIN32_FIND_DATA));
HANDLE handle = FindFirstFile("d:\\test\\*", &fileData);
CStringArray strArray;
while(handle != INVALID_HANDLE_VALUE)
{
strArray.Add(fileData.cFileName); // the problem is that the fileData.cFileName always contains "."
if(FALSE == FindNextFile(handle, &fileData))
break;
}
FindClose(handle);
return strArray;
}
问题是fileData.cFileName 总是包含“.”。 “。”第一个文件,“..”第二个文件,依此类推。 这段代码有什么问题? 提前致谢。
【问题讨论】:
-
您的代码没有问题。文件名“。”和“..”是正常的,你只需要忽略它们。
-
它们是目录名,而不是文件名,你不能指望它们存在 - 根目录没有
..。但我承认,他们报告这些是微软方面的懒惰。 -
其实“。”表示“当前目录”,“..”表示“父目录”。
FindFileNext报告这些是完全没用的,可能只是出于与老式 Windows 版本的兼容性原因。 -
谢谢@MichaelWalz