下面关于文件搜索的代码是在网上找到的void ListFile(char* szDir)
{
char szTempDir[MAX_PATH+1];
strcpy(szTempDir,szDir);
strcat(szTempDir,"*");
HANDLE hFindFile;
WIN32_FIND_DATA FileData; hFindFile = FindFirstFile(szTempDir,&FileData);
if( hFindFile == INVALID_HANDLE_VALUE )
{
return ;
}
else
{
do
{ if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(FileData.cFileName,".")//--------------->??
&& strcmp(FileData.cFileName,".."))//------------->??
{
char szNewDir[MAX_PATH+1];
strcpy(szNewDir,szDir);
strcat(szNewDir,FileData.cFileName);
strcat(szNewDir,"\\");
ListFile(szNewDir);
}
else
{
cout<<szDir<<FileData.cFileName<<endl;
}
}
while(FindNextFile(hFindFile,&FileData)); FindClose(hFindFile);
}
}上面作标记的代码我不太明白,已经判断找到的是不是目录,为什么还要判断FileData.cFileName?
而且,如果找到的是目录是不是代表找到的是一个文件夹?如果是,为什么FileData.cFileName不是文件夹的名字而是"."或".."?
{
char szTempDir[MAX_PATH+1];
strcpy(szTempDir,szDir);
strcat(szTempDir,"*");
HANDLE hFindFile;
WIN32_FIND_DATA FileData; hFindFile = FindFirstFile(szTempDir,&FileData);
if( hFindFile == INVALID_HANDLE_VALUE )
{
return ;
}
else
{
do
{ if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(FileData.cFileName,".")//--------------->??
&& strcmp(FileData.cFileName,".."))//------------->??
{
char szNewDir[MAX_PATH+1];
strcpy(szNewDir,szDir);
strcat(szNewDir,FileData.cFileName);
strcat(szNewDir,"\\");
ListFile(szNewDir);
}
else
{
cout<<szDir<<FileData.cFileName<<endl;
}
}
while(FindNextFile(hFindFile,&FileData)); FindClose(hFindFile);
}
}上面作标记的代码我不太明白,已经判断找到的是不是目录,为什么还要判断FileData.cFileName?
而且,如果找到的是目录是不是代表找到的是一个文件夹?如果是,为什么FileData.cFileName不是文件夹的名字而是"."或".."?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货