要输入需要查询的文件名后,在每个磁盘开始搜索每个目录和子目录,将找到的相同文件名的所有文件和详细信息全部输出。效果几乎类似与Windows的搜索功能。
我没有学过,非常棘手
 ,请好心人帮助,谢谢!
,请好心人帮助,谢谢!										
					
	 ,请好心人帮助,谢谢!
,请好心人帮助,谢谢!										
					
	 2007-06-04 21:54
	    2007-06-04 21:54
   2007-06-05 13:51
	    2007-06-05 13:51
   2007-06-05 13:58
	    2007-06-05 13:58
  #include<windows.h>
#include<stdio.h>
#include<iostream.h>
BOOL CHeDlg::IsRoot(LPCTSTR lpszPath) 
{ //是否根目录
TCHAR szRoot[4]; 
wsprintf(szRoot, "%c:\\", lpszPath[0]); 
return (lstrcmp(szRoot, lpszPath) == 0); 
} 
void CHeDlg::FindAll(::LPCTSTR lpszPath) 
{
    TCHAR szFind[MAX_PATH]; 
    lstrcpy(szFind, lpszPath); 
    if (!IsRoot(szFind))lstrcat(szFind, "\\"); 
    lstrcat(szFind, "*.*"); // 找所有文件 
    WIN32_FIND_DATA wfd; 
    HANDLE hFind = FindFirstFile(szFind, &wfd); 
    if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败 
        return; 
    do 
    {
        if (wfd.cFileName[0] == '.') 
            continue; // 过滤这两个目录 
        if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
        { 
            TCHAR szFile[MAX_PATH]; 
            if (IsRoot(lpszPath)) 
                wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 
            else 
                wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); 
            FindAll(szFile); // 如果找到的是目录,则进入此目录进行递归 
        } 
        else 
        { 
            TCHAR szFile[MAX_PATH]; 
            if (IsRoot(lpszPath)) 
                wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 
            else 
                wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
             //干什么事情
        }
    } while (FindNextFile(hFind, &wfd); 
    FindClose(hFind); // 关闭查找句柄 
}//网上找的 
 2007-06-05 15:05
	    2007-06-05 15:05
   2007-06-05 15:08
	    2007-06-05 15:08
   2007-06-11 13:06
	    2007-06-11 13:06