【发布时间】:2013-12-25 15:43:28
【问题描述】:
我知道这很可能是重复的。但是,我很难真正得到一个有效的答案。
我要做的是列出工作目录中的所有文件夹。以下是我从 MS 网站 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx) 改编的一些代码
这给出了输出:
Filname:52428
我已经检查了文件夹 - 我想列出三个文件夹 'Vidoe' 'John' 'David' 我不确定为什么它会打印出上面的结果。
我不想使用 Boost - 也不想下载任何第三方插件。
int main(int argc, char** argv)
{
HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATA ffd;
//The Directory where the .exe is run from.
hFind = FindFirstFile(TEXT(".\\Players\\*"), &ffd);
do
{
Sleep(1000);
bool isDirectory = ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(isDirectory)
{
cout << "DirectoryName: " << *ffd.cFileName << endl;
}
else
{
cout << "FileName: " << *ffd.cFileName << endl;
}
}while(FindNextFile(hFind, &ffd) != 0);
FindClose(hFind);
}
编辑: 我没有要执行此操作的特定方法,我想做的只是输出目录中的文件夹-我不在乎它是如何完成的。
【问题讨论】:
-
得到错误:文件名:???????????????????????????????????? ???????????????????????????????????? ??????????????????????????????????????????????????? ?????????????????????????????? ??????????????????????????????????????????????????? ?????????????????????????????? ??????????????????????????????????????????????????? ?????=?G???=?g☺ 按任意键继续。 . .
-
您应该在继续之前检查 hFind 的值。我敢打赌你会拿回来 INVALID_HANDLE_VALUE 因为什么都没找到。
-
您是否在 Visual Studio 调试器中运行它?请记住,用于调试的默认应用程序路径不是包含可执行文件的文件夹。它是包含解决方案文件的文件夹。
-
我正在使用 Visual Studio 运行它。我在我的程序中的其他地方使用相同的“.\\Players\*”字符串以产生很好的效果。
-
然后确保将调试器的工作目录调整到exe的文件夹。这是在项目设置的调试选项卡中。