|
遍历文件目录 Travel in a folder 遍历文件目录,即把一个目录里的文件以及子目录里的文件名都取出来。本文是CFileFind类的使用例的笔记。下面的程序是从一个目录出发,把这个目录里的所有成员按着层次TRACE到DEBUG输出画面。 void TravelFolder(CString strDir, int nDepth)
{
CFileFind filefind; //声明CFileFind类型变量
CString strWildpath = strDir + _T("\\*.*"); //所有文件都列出。
if(filefind.FindFile(strWildpath, 0)) //开始检索文件
{
BOOL bRet = TRUE;
while(bRet)
{
bRet = filefind.FindNextFile(); //枚举一个文件
if(filefind.IsDots()) //如果是. 或 .. 做下一个
continue;
for (int i = 0; i < nDepth; i ++) //层次空格打印
{
TRACE(_T(" "));
}
if(!filefind.IsDirectory()) //不是子目录,把文件名打印出来
{
CString strTextOut = strDir + CString(_T("\\")) + filefind.GetFileName();
TRACE(_T("file = %s\r\n"), strTextOut);
}
else //如果是子目录,递归调用该函数
{
CString strTextOut = strDir + CString(_T("\\")) + filefind.GetFileName();
TRACE(_T("dir = %s\r\n"), strTextOut);
TravelFolder(strTextOut, nDepth + 1);//递归调用该函数打印子目录里的文件
}
}
filefind.Close();
}
}
//测试,把d盘的\temp里的所有文件和子目录打印到DEBUG输出画面。
void Test()
{
TravelFolder(CString(_T("d:\\temp")), 0);
}
|