• c 递归获取文件与目录


     

     

    本文用来说明c 调用 win32 IO函数,获取当前路径,获取当前模块所在的目录,以及递归输出某个目录的文件与文件夹方法。

    代码如下:

    /************************************************************
    
    FileName: direcory operate
    
    Version :
    
    Date:2013.01.30
    
    Description: //本模块用来说明win32 目录操作函数的用法
    
    <author>
    
    hbb0b0@163.com
    
    </author>
    
    ***********************************************************/
    
    #include "stdafx.h"
    
    #include "stdio.h"
    
    #include "windows.h"
    
    //递归目录,输出目录名称与文件名
    
    void recursivedirecory(char * path);
    
    int _tmain(int argc, _TCHAR* argv[])
    
    {
    
       //用于存放当前路径缓冲区
    
       char currentPath[MAX_PATH];
    
       BOOL ifrelative=FALSE;
    
       DWORD result=0;
    
       const char relativepath[]="..\\";
    
       char relativepath_real[MAX_PATH];
    
       char * ptr1=relativepath_real;
    
       char * dir="E:\\Hbb0b0\\";
    
       HMODULE moudule=NULL;
    
       memset(currentPath,0,MAX_PATH);
    
       memset(relativepath_real,0,MAX_PATH);
    
     
    
       //获取当前路径
    
       result=GetCurrentDirectoryA(MAX_PATH,currentPath);
    
       printf("%s\n",currentPath);
    
     
    
       //获取当前运行程序的路径
    
       moudule= GetModuleHandleA(NULL);
    
       result=GetModuleFileNameA(moudule,currentPath,strlen(currentPath));
    
     
    
       //获取相对路径全路径
    
       result=GetFullPathNameA(relativepath,MAX_PATH,relativepath_real,NULL);
    
       printf("full path:%s ",relativepath_real);
    
     
    
       //递归目录
    
       recursivedirecory(dir);
    
     
    
       return 0;
    
    }
    
     
    
     
    
    void recursivedirecory(char * path)
    
    {
    
       //存放查询函数返回的句柄
    
       HANDLE hand=NULL;
    
       //查询函数数据结构
    
       WIN32_FIND_DATAA  finddata;
    
       char fullpath[MAX_PATH];
    
       char findpath[MAX_PATH];
    
       sprintf( findpath,"%s\\*.*",path);
    
       //FindFirstFileA 不仅仅查找文件,也会查找到目录
    
        //FindFirstFileA *.* 表示查找所用文件,文件通配符
    
       //无值就会找不到任何文件
    
       hand=FindFirstFileA(findpath,&finddata);
    
       //.当前目录名称
    
       //..上级目录的名称
    
       do{
    
         
    
          if(lstrcmpA(finddata.cFileName,".")==0|
    
             lstrcmpA(finddata.cFileName ,"..")==0)
    
          {
    
     
    
             continue;
    
          }
    
     
    
          wsprintfA(fullpath,"%s\\%s",path,finddata.cFileName );
    
         
    
          if(finddata.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)
    
          {
    
             printf("directory:\n");
    
             recursivedirecory(fullpath);
    
          }
    
          else
    
          {
    
             printf("file:%s \n",fullpath);
    
          }
    
     
    
       }while(FindNextFileA(hand,&finddata));//是否含有文件
    
      
    
    }
    
     
  • 相关阅读:
    Python生成器表达式
    Python列表解析
    Python迭代器(Iterator)
    Python set 集合
    python eval 函数妙用
    Python字典 (dict)
    Python序列之元组 (tuple)
    Python序列之列表 (list)
    递归和反射
    常用标准库
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/2888790.html
Copyright © 2020-2023  润新知