Windows下在指定目录下查找指定文件

目录:

  1. 使用FindFirstFile和FindNextFile函数
  2. 使用MFC的CFileFind类

详细内容:

使用FindFirstFile和FindNextFile函数

示例代码:

#include <windows.h>

#include <stdio.h>



int main()

{

    /*在strPath目录下找到所有JPG文件*/

    TCHAR strPath[] = TEXT("E:\\Res\\11\\*.JPG");

    int nFiles = 0;

    WIN32_FIND_DATA FindData;

    /*查找第一个文件*/

    HANDLE hFind = ::FindFirstFile(strPath, &FindData);

    if(INVALID_HANDLE_VALUE == hFind)

    {    /*FindFirstFile调用出错*/

        DWORD err = GetLastError();

        if(ERROR_FILE_NOT_FOUND == err)

        {    /*未找到一个文件*/

            printf("调用FindFirstFile出错,错误原因:未找到一个文件!\n");

        }

        else

        {    /*FindFirstFile函数调用出错*/

            printf("调用FindFirstFile出错,错误原因:其他错误!\n");

        }

        return 1;

    }



    while(TRUE)

    {

        if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

        {    /*找到的是目录*/



        }

        else

        {    /*找到的是文件*/

            ++nFiles;

            wprintf(TEXT("%s\t"), FindData.cFileName);

        }

        /*查找下一个文件*/

        if(!::FindNextFile(hFind, &FindData))

        {    /*调用FindNextFile函数出错*/

            DWORD err = GetLastError();

            if(ERROR_NO_MORE_FILES == err)

            {    /*未找到一个文件*/

                printf("总共有%d个文件!\n", nFiles);

            }

            else

            {    /*调用FindNextFile出错*/

                printf("调用FindNextFile出错!\n");

            }

            break;

        }

    }

    /*关闭查找句柄*/

    ::FindClose(hFind);

    return 0;

}

使用MFC的CFileFind类

示例代码:

#include <afx.h>

#include <stdio.h>



int main()

{

    /*在strPath目录下找到所有JPG文件*/

    TCHAR strPath[] = TEXT("E:\\Res\\11\\*.JPG");

    int nFiles = 0;

    CFileFind finder;

    BOOL bWorking = finder.FindFile(strPath);



    while(bWorking)

    {

        bWorking = finder.FindNextFile();



        if (finder.IsDots() || finder.IsDirectory())

            continue;



        ++nFiles;

        wprintf(TEXT("%s\t"), finder.GetFileName());

    }

    printf("\n总共有%d个文件!\n", nFiles);

    finder.Close();

    return 0;

}

 

你可能感兴趣的:(windows)