C查找某个目录下的所有文件(包括子目录)(转)

原创 2006年06月13日 20:44:00

//原作者不详,偶然发现。然后稍做了修改,测试了以下。整理了一下。

#include "stdio.h"
#include "windows.h"
#include "winbase.h"
void FindFileInDir(char* rootDir);

main()
{
 FindFileInDir("C://");
}

void FindFileInDir(char* rootDir)//, char* strRet)
{
    char fname[1024];
    ZeroMemory(fname, 1024);
    WIN32_FIND_DATA fd;
    ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
    HANDLE hSearch;
    char filePathName[256];
    char tmpPath[256];
    ZeroMemory(filePathName, 256);
    ZeroMemory(tmpPath, 256);
    strcpy(filePathName, rootDir);
    BOOL bSearchFinished = FALSE;
    if( filePathName[strlen(filePathName) -1] != '//' )
    {
       strcat(filePathName, "//");
    }
    strcat(filePathName, "*");

    hSearch = FindFirstFile(filePathName, &fd);
 
    //Is directory

    if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

       && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )      
    {

       strcpy(tmpPath, rootDir);


       strcat(tmpPath, fd.cFileName);

    if( tmpPath[strlen(tmpPath) -1] != '//' )
  {
   strcat(tmpPath, "//");
  } 
       FindFileInDir(tmpPath);
    }
    while( !bSearchFinished )
    {

       if( FindNextFile(hSearch, &fd) )
       {

           if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

              && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )      
           {

              strcpy(tmpPath, rootDir);

              strcat(tmpPath, fd.cFileName);
      if( tmpPath[strlen(tmpPath) -1] != '//' )
    {
     strcat(tmpPath, "//");
    } 

              FindFileInDir(tmpPath);
           }
           else   if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
                  {
      printf("%s%s/n",rootDir,fd.cFileName);
         
                  }
       }
       else
    {
           if( GetLastError() == ERROR_NO_MORE_FILES )        
           {
              bSearchFinished = TRUE;

           }
           else
              bSearchFinished = TRUE;
       }
    }
    FindClose(hSearch);

}

相关文章推荐

[Linux C]递归遍历指定目录下的子目录和文件

/* 功能:演示了在Linux下利用C语言递归遍历指定目录下的子目录(不含隐藏目录)和文件 */ #include #include #include void List(ch...

[Windowns C]递归遍历指定目录下的子目录和文件

/* 功能:演示了利用C语言递归遍历指定目录下的子目录和文件! 说明:经修改也可以搜索文件名符合特定格式的文件,如修改“\\*.*”为“\\*.log” */ #include #i...

读取某一目录下(包括子目录)所有mp3、wma、m4a格式文件,制作成m3u列表(Java, Windows)

把以前别人写过的程序改了改,

二、列出指定目录下的文件(包括子目录)

当File对象指向一个目录时,可以通过File对象来获取目录下的文件信息。     1、File类的list方法返回该目录下所有文件(包括目录)的文件名,文件名不包含路径信息。     2、Fil...
  • TFFITS
  • TFFITS
  • 2012年04月23日 18:26
  • 1667

java遍历目录下的包括子目录下的所有文件

在java中遍历一个文件夹里边的所有文件,可以有两种方式:       一、递归遍历,通常也是开发者第一时间能想到的方法,递归遍历的优点是:实现起来相对简单,代码量相对较少,执行效率较高,缺点是:比较...

用python遍历目录下文件(不包括子目录)

#!/usr/bin/env python #coding=gbk __author__ = 'lc' import MySQLdb import glob import os import sys...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: C查找某个目录下的所有文件(包括子目录)(转)
举报原因:
原因补充:

(最多只允许输入30个字)