此处贴一个自己写的代码作为示例
BOOL CFileCountDlg::ReadAllFilesToWord(CString path, CProgressDlg *progressDlg, int ¤tFileNum, int &fileNum)
{
CString str;
CFileFind _finder;
bool _find = false;
_find = _finder.FindFile(path + _T("\\") + _T("*.*"));
while (_find)
{
_find = _finder.FindNextFile();
str = _finder.GetFilePath();
if (!_finder.IsDirectory() && !_finder.IsDots()) //过滤文件夹、.与..
{
//输出标题
WriteTitle(str);
//输出代码,存储文件清单信息
currentFileNum++;
WriteCodeAndReadList(str, progressDlg, currentFileNum, fileNum);
}
else if (_finder.IsDirectory() && !_finder.IsDots()) //文件夹
{
ReadAllFilesToWord(str, progressDlg, currentFileNum, fileNum);
}
}
return TRUE;
}
IsDots判断是否为点--这个要说明一下,用过Dos的话,就应该知道,每个目录下都有缺省的两个目录,名称分别为 '. '和 '.. ',分别代表本层目录和上一层目录。因此,当我们在遍历目录下文件时,需要过滤掉这两个缺省目录。所以由CFileFind对象引用IsDots的意思是:这是一个目录并且不是这个目录本身或者上层目录。
IsDirectory表明这是一个目录,isDots表明这个是.或者..而这两个东西虽然是目录,但是一个表明这个目录本身,一个代表上层目录(但是根目录下面..也是本身)
此时由CFileFind对象引用IsDirectory表明当前的CFileFind对象是否为目录。