怎么显示一个文件夹下的所有文件的文件名?
如何显示一个文件夹下的所有文件的文件名??
CFileFind finder;
BOOL bWorking = finder.FindFile( "*.* ");
while (bWorking)
{
bWorking = finder.FindNextFile();
cout < < (LPCTSTR) finder.GetFileName() < < endl;
}
这段代码是MSDN里的例子,我把其中的(*.*)换成了( "D://*.* ")目的是想得到D盘下的所有文件,这个没有考虑D盘下还有其他文件夹的问题,后面有换成了( "D://*.jpeg "),是想得到D盘下所有的jpeg格式的文件,我这么理解对吗?、
这段代码编译都过得去,可是执行就会有错误,是怎么回事呢??
错误:
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/nomfc.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
------解决方案--------------------
工程设置成支持多线程的
------解决方案--------------------
project-> setting-> c/c++-> category-> code generation-> 换成多线程就行了
------解决方案--------------------
重新键工程;
win32 console applocation -》 选择支持MFC的-》在else 部分里加上自己代码(注释里有标明)
就把你粘贴在这里的代码粘贴上去;运行 正确。
你这个代码只能显示当前文件夹下的。
要显示下面文件夹的话就要使用递归函数了。
你的函数该成find()
运行find(D:\\*.*)
CFileFind finder;
find(char * str)
{
BOOL bWorking = finder.FindFile(str);
while (bWorking)
{
bWorking = finder.FindNextFile();
cout < < (LPCTSTR) finder.GetFileName() < < endl;
if(finder.isDirectory())
find(finder.GetFileName()); //递归;
}
return ;
}
代码意思已经达到 细节你自己调试调试吧 加油。帮你UP。。
百度也能搜索到代码。
------解决方案--------------------
写错了,是win32 application无法用mfc,你在工程设置里选择动态加载mfc,然后在文件头加上afxwin.h
------解决方案--------------------
你应该还有其他代码吧,其他代码中有多线程的部分。百度了下貌似发现有人也出现这种奇怪的多线程的问题,只要加上 afx.h就会出现。 建议你在工程中设置使用MFC,而不是简单的加上库文件。
如果真的是有多线程部分,那么楼上有几位已经说出了工程的设置方法。
------解决方案--------------------
看我的
void CEditLegalFileDlg::AnalyseDir(char *szDir)
{
char szFind[MAX_PATH];
char szFile[1024];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,szDir);
strcat(szFind, "\\*.* ");
HANDLE hFind=FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!= '. ')
{
strcpy(szFile,szDir);
strcat(szFile, "\\ ");
strcat(szFile,FindFileData.cFileName);
AnalyseDir(szFile);
}
}
else
{
int index=(int)strlen(FindFileData.cFileName)-1;
while(index> 0)
{
if(FindFileData.cFileName[index]== '. ') //找到第一个点
break;
index--;
}
char *p=&FindFileData.cFileName[index+1];
char fullName[MAX_PATH];
strcpy(fullName,szDir);
strcat(fullName, "\\ ");
strcat(fullName,FindFileData.cFileName);
CFileFind finder;
BOOL bWorking = finder.FindFile( "*.* ");
while (bWorking)
{
bWorking = finder.FindNextFile();
cout < < (LPCTSTR) finder.GetFileName() < < endl;
}
这段代码是MSDN里的例子,我把其中的(*.*)换成了( "D://*.* ")目的是想得到D盘下的所有文件,这个没有考虑D盘下还有其他文件夹的问题,后面有换成了( "D://*.jpeg "),是想得到D盘下所有的jpeg格式的文件,我这么理解对吗?、
这段代码编译都过得去,可是执行就会有错误,是怎么回事呢??
错误:
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/nomfc.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
------解决方案--------------------
工程设置成支持多线程的
------解决方案--------------------
project-> setting-> c/c++-> category-> code generation-> 换成多线程就行了
------解决方案--------------------
重新键工程;
win32 console applocation -》 选择支持MFC的-》在else 部分里加上自己代码(注释里有标明)
就把你粘贴在这里的代码粘贴上去;运行 正确。
你这个代码只能显示当前文件夹下的。
要显示下面文件夹的话就要使用递归函数了。
你的函数该成find()
运行find(D:\\*.*)
CFileFind finder;
find(char * str)
{
BOOL bWorking = finder.FindFile(str);
while (bWorking)
{
bWorking = finder.FindNextFile();
cout < < (LPCTSTR) finder.GetFileName() < < endl;
if(finder.isDirectory())
find(finder.GetFileName()); //递归;
}
return ;
}
代码意思已经达到 细节你自己调试调试吧 加油。帮你UP。。
百度也能搜索到代码。
------解决方案--------------------
写错了,是win32 application无法用mfc,你在工程设置里选择动态加载mfc,然后在文件头加上afxwin.h
------解决方案--------------------
你应该还有其他代码吧,其他代码中有多线程的部分。百度了下貌似发现有人也出现这种奇怪的多线程的问题,只要加上 afx.h就会出现。 建议你在工程中设置使用MFC,而不是简单的加上库文件。
如果真的是有多线程部分,那么楼上有几位已经说出了工程的设置方法。
------解决方案--------------------
看我的
void CEditLegalFileDlg::AnalyseDir(char *szDir)
{
char szFind[MAX_PATH];
char szFile[1024];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,szDir);
strcat(szFind, "\\*.* ");
HANDLE hFind=FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!= '. ')
{
strcpy(szFile,szDir);
strcat(szFile, "\\ ");
strcat(szFile,FindFileData.cFileName);
AnalyseDir(szFile);
}
}
else
{
int index=(int)strlen(FindFileData.cFileName)-1;
while(index> 0)
{
if(FindFileData.cFileName[index]== '. ') //找到第一个点
break;
index--;
}
char *p=&FindFileData.cFileName[index+1];
char fullName[MAX_PATH];
strcpy(fullName,szDir);
strcat(fullName, "\\ ");
strcat(fullName,FindFileData.cFileName);