MFC 遍历文件夹,获取文件信息

时间:2022-08-22 21:33:54
// 遍历文件夹,获取文件信息
void TravelFolder(CString strDir)
{
    // 文件当前目录
    TCHAR Buffer[MAX_PATH];
    DWORD dwRet = GetCurrentDirectory(MAX_PATH, Buffer);
    CString strCurrent(Buffer);

    CFileFind filefind;                                         //声明CFileFind类型变量

    CString strWildpath = strDir + _T("\\*.*");     //所有文件都列出。

    if(filefind.FindFile(strWildpath, 0))                    //开始检索文件
    {
        BOOL bRet = TRUE;

        while(bRet)
        {
            bRet = filefind.FindNextFile();                 //枚举一个文件            

            if(filefind.IsDots())                                 //如果是. 或 .. 做下一个
            {
                continue;
            }

            // 文件名 begin
            CString strFileName = filefind.GetFileName();
            // 文件名 end

            // 文件修改时间 begin
            FILETIME   filetime;
            FILETIME   localtime;
            SYSTEMTIME systemtime;
            filefind.GetLastWriteTime(&filetime);

            FileTimeToLocalFileTime(&filetime, &localtime); //换成本地时间

            FileTimeToSystemTime(&localtime, &systemtime);  //换成系统时间格式

            CString strTime = _T("");
            strTime.Format(_T("%04d%02d%02d%02d%02d%02d"),
                systemtime.wYear, systemtime.wMonth, systemtime.wDay,
                systemtime.wHour, systemtime.wMinute, systemtime.wSecond);
            // 文件修改时间 end            

            if(!filefind.IsDirectory())                          //不是子目录,把文件名打印出来
            {
                CString strWrite = _T("");
                strWrite += strFileName;
                strWrite += _T("\t");
                strWrite += strTime;
                strWrite +=  + _T("\r\n");
                TRACE(strWrite);
            }
            else                                                   //如果是子目录,递归调用该函数
            {
                CString strNewDir = strDir + CString(_T("\\")) + filefind.GetFileName();

                TravelFolder(strNewDir);//递归调用该函数打印子目录里的文件
            }
        }

        filefind.Close();
    }
}