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

  

}

 

 

posted @ 2013-02-01 11:58  b0b0  阅读(612)  评论(0编辑  收藏  举报