注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

遍历目录及文件(2)  

2014-07-14 11:45:27|  分类: Windows编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这里讨论如何遍历一个文件夹下的文件和文件夹,并对子文件夹进行递归遍历。

遍历子目录的关键是,一个能够调用自己的函数,该函数能够接收一个文件夹路径,在检索到有子文件夹后,再调用自身。

实现代码如下:

#include <stdlib.h>
#include <stdio.h>
#include "windows.h"
/*
    遍历文件夹及其子目录
    文件夹路径必须以反斜杠('\\')结尾
    初次调用请将depth设置为0
*/
void RecursiveDirectory(LPCWSTR dir,int depth=0)
{
    WCHAR curDir[MAX_PATH]=L"";
    wcscpy(curDir,dir);
    wcscat(curDir,L"*");
    WIN32_FIND_DATAW findFileData;
    HANDLE hDir=FindFirstFile(curDir,&findFileData);
    WCHAR subDir[MAX_PATH]=L"";
    if(hDir==INVALID_HANDLE_VALUE)
    {
        printf("Failed to get Handle.\n");
        return;
    }
    
    do 
    {
        if(wcscmp(findFileData.cFileName,L".")==0)
            continue;
        if(wcscmp(findFileData.cFileName,L"..")==0)
            continue;
        
        int t=depth;
        while (t>=0)
        {
            printf("--");
            t--;
        }//用来表示层次结构的“--”
        wprintf_s(L"%s",findFileData.cFileName);
        
        if(findFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
        {
            printf("\t\t<DIR>\n");
            wcscpy(subDir,dir);
            wcscat(subDir,L"\\");
            wcscat(subDir,findFileData.cFileName);
            wcscat(subDir,L"\\");
            RecursiveDirectory(subDir,depth+1);
        }
        printf("\n");
    } while (FindNextFile(hDir,&findFileData));
}

int main(int argn,char* argv[])
{
    WCHAR dir[]=L"C:\\Windows\\System32\\";
    RecursiveDirectory(dir,0);
    return 0;
}
程序使用到了FindFirstFile、FindNextFile和一些字符串操作函数,注意FindFirstFile函数的第一个参数,如果是”C:\Windows\”,则实际上只能获取这个文件夹的一些信息,如果想要获取该文件夹下的文件和子文件夹,则应该使用”C:\Windows\*”这种结构。
  评论这张
 
阅读(384)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016