c 递归获取文件与目录

 

 

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

代码如下:

/************************************************************



FileName: direcory operate



Version :



Date:2013.01.30



Description: //本模块用来说明win32 目录操作函数的用法



<author>



[email protected]



</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));//是否含有文件



  



}



 

 

你可能感兴趣的:(文件)