zoukankan      html  css  js  c++  java
  • 一个遍历所有文件夹的例子

    只是给出那个最核心的函数,他只是对文件夹感兴趣。


    bool EnumDirectory(TCHAR *dirpath)

    {

     WIN32_FIND_DATA fd;

     TCHAR szTempFileFind[MAX_PATH] = { 0 };

     bool bIsFinish = false;

     ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));

     wsprintf(szTempFileFind, L"%s\\*.*", dirpath);

     HANDLE hFind = FindFirstFile(szTempFileFind, &fd);

     if (hFind == INVALID_HANDLE_VALUE)

     {

      return false;

     }

     while (!bIsFinish)

     {

      if ((StrCmp(fd.cFileName, L".") != 0) && (StrCmp(fd.cFileName, L"..") != 0))

      { //过滤掉代表本级和上级的文件夹

       TCHAR szFoundFileName[MAX_PATH] = { 0 };

       StrCpy(szFoundFileName, fd.cFileName);

       if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

       { //只对文件夹感兴趣

          // do what you want;

        EnumDirectory(szTempDir);//递归调用

       }

      }

      bIsFinish = (FindNextFile(hFind, &fd)) ? false : true;


     }

     FindClose(hFind);

     return 0;

    }

    一般的用法如下,

    for(i='A';i<='Z';i++)

     {

      WCHAR x[20]={i,':'};

      UINT Type=GetDriveType(x); //对磁盘分区进行逐个类型匹配

      if(Type == DRIVE_NO_ROOT_DIR)
       MessageBox(NULL,TEXT("DRIVE_NO_ROOT_DIR"),TEXT(""),MB_OK);

      if(Type==DRIVE_FIXED||Type==DRIVE_REMOVABLE)//取硬盘和移动磁盘

      {

       EnumDirectory(x);//进行感染 此函数下面介绍

      }

     }

  • 相关阅读:
    C# BackgroundWorker使用总结
    C#如何优雅的结束一个线程
    C#线程中安全访问控件(重用委托,避免繁复的delegate,Invoke)总结
    C#异步方法调用(四大方法详解)
    C# Winform 跨线程更新UI控件常用方法汇总
    走进异步编程的世界
    走进异步编程的世界
    走进异步编程的世界
    Unity-Redis数据存储
    untiy
  • 原文地址:https://www.cnblogs.com/aicro/p/1643670.html
Copyright © 2011-2022 走看看