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);

}

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

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

c语言 遍历搜索文件夹(获取文件夹中所有内容)

详细介绍使用c语言完成遍历搜索文件夹(获取文件夹中所有内容)的操作。
  • aoshilang2249
  • aoshilang2249
  • 2014年07月15日 16:45
  • 6242

C语言列出文件目录中的所有文件

dirent.h头文件中包含了一些对文件目录进行操作的接口,虽然不是C标准中的,但是在C语言编程中是一类广泛使用的接口类型。可以通过这个头文件中的接口来查看文件目录中的文件列表,以及各个文件的信息大小...
  • qq_20916555
  • qq_20916555
  • 2016年04月12日 15:22
  • 2121

C++ 获取文件夹下的所有文件名

获取文件夹下所有的文件名是changy
  • xuejiren
  • xuejiren
  • 2014年07月05日 11:17
  • 51801

目录及文件操作命令

1.1 ls [语法]: ls [-RadCxmlnogrtucpFbqisf1] [目录或文件......] [说明]: ls 命令列出指定目录下的文件,缺省目录为当前目录 ./,缺省输出顺序为纵向...
  • pslovetq
  • pslovetq
  • 2008年03月10日 15:24
  • 602

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

//原作者不详,偶然发现。然后稍做了修改,测试了以下。整理了一下。#include "stdio.h"#include "windows.h"#include "winbase.h"void Find...
  • happytang
  • happytang
  • 2006年06月13日 20:44
  • 1002

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

//原作者不详,偶然发现。然后稍做了修改,测试了以下。整理了一下。#include "stdio.h"#include "windows.h"#include "winbase.h"void Find...
  • LionD8
  • LionD8
  • 2005年06月11日 23:07
  • 1921

linux C 递归找出一个路径下的所有文件

#include #include #include #include #include #include void dir_oper(char const*path); int ma...
  • u014453898
  • u014453898
  • 2017年02月05日 00:58
  • 292

grep技巧(-r):在某一目录下递归[所有子目录]查找某一字串:+文件路径

转自:http://zhumeng8337797.blog.163.com/blog/static/1007689142011350151438/ 在某一目录下递归[所有子目录]查找某一字串: ...
  • minghuiw
  • minghuiw
  • 2014年07月06日 16:00
  • 2306

find搜索目录下所有文件内容中的某个单词

用grep命令在当前目录所有的普通文件中搜索hostname这个单词: # find . -type f -print | xargs grep "hostname"...
  • atec2000
  • atec2000
  • 2011年07月25日 13:11
  • 878
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: C查找某个目录下的所有文件(包括子目录)(转)
举报原因:
原因补充:

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