VC取目录(包括子目录)下所有文件名

 

#include  < afxtempl.h >

typedef CList
< CString,CString &>  StringList;

void  GetAllFiles(CString path,StringList &  filenamelist, POSITION headpos)
{
 WIN32_FIND_DATA fdata 
=  { 0 };  
 _chdir(path.GetBuffer(
0 ));
 HANDLE hSearch 
=  FindFirstFile(_T( " * " ), & fdata);
 
if (hSearch  ==  INVALID_HANDLE_VALUE)    
  
return ;
 CString FileName;

 
if (fdata.dwFileAttributes  &  FILE_ATTRIBUTE_DIRECTORY) {
  
if (fdata.cFileName[ 0 ] != ' . ' )
  { 
   CString childpath;
   childpath.Format(
" %s\\%s " ,path,fdata.cFileName);
   SetCurrentDirectory(childpath.GetBuffer(
0 ));
   GetAllFiles(childpath,filenamelist,headpos);
   SetCurrentDirectory(
" .. " );
  }
 }
 
else
 {
  FileName.Format(
" %s\\%s " ,path,fdata.cFileName);
  filenamelist.InsertAfter(headpos,FileName);
 }

 
while (FindNextFile(hSearch,  & fdata))
 {
  
if (fdata.dwFileAttributes  &  FILE_ATTRIBUTE_DIRECTORY)  {
   
if (fdata.cFileName[ 0 ] != ' . ' )
   {
    
    CString childpath;
    childpath.Format(
" %s\\%s " ,path,fdata.cFileName);
    SetCurrentDirectory(childpath.GetBuffer(
0 ));
    GetAllFiles(childpath,filenamelist,headpos);
    SetCurrentDirectory(
" .. " );
   }
  }
  
else
  {
   FileName.Format(
" %s\\%s " ,path,fdata.cFileName);
   filenamelist.InsertAfter(headpos,FileName);
  }
 }

 FindClose(hSearch);
}


//  调用

 StringList FileNameList;
 CString Head 
=   " . " ;
 POSITION pos 
=  FileNameList.AddHead(Head);
 GetAllFiles(Path,FileNameList,pos);
 
int  nCount  =  FileNameList.GetCount();
 
for  ( int  i = 1 ;i < nCount;i ++ )
 {
  POSITION pos 
=  FileNameList.FindIndex(i);
  CString FileName 
=  FileNameList.GetAt(pos);
  cout 
<<  FileName.GetBuffer( 0 <<  endl;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值