文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用C语言实现遍历磁盘上的所有文件

用C语言实现遍历磁盘上的所有文件

时间:2010-11-19  来源:teiller2008

    算法描述如下:

while 当前文件夹有文件
{
   if 文件是子文件夹
   递归调用;
   else  处理该文件
}

    其中,fblk为指定的保存文件信息的一个结构,定义如下:

┏━━━━━━━━━━━━━━━━━━┓
┃struct ffblk ┃
┃{ ┃
┃ char ff_reserved[21]; /*DOS保留字*/┃
┃ char ff_attrib; /*文件属性*/ ┃
┃ int ff_ftime; /*文件时间*/ ┃
┃ int ff_fdate; /*文件日期*/ ┃
┃ long ff_fsize; /*文件长度*/ ┃
┃ char ff_name[13]; /*文件名*/ ┃
┃} ┃
┗━━━━━━━━━━━━━━━━━━┛
attrib为文件属性,由以下字符代表
┏━━━━━━━━━┳━━━━━━━━┓
┃FA_RDONLY 只读文件┃FA_LABEL 卷标号┃
┃FA_HIDDEN 隐藏文件┃FA_DIREC 目录 ┃
┃FA_SYSTEM 系统文件┃FA_ARCH 档案 ┃
┗━━━━━━━━━┻━━━━━━━━┛

    例:

    struct ffblk f;

    findfirst("*.TXT",&f,FA_RDONLY); 表示搜寻后缀名是TXT的只读文件。

    运行环境:XP

    编译器:turboc2.0

#include "stdio.h"
#include "stdlib.h"
#include "dir.h"
#include "string.h"
#include "dos.h"
void pathFile(char const *path);
static char *hardDevice[4]={"C:","D:","E:","F:"};
static long count=0;
main()
{
int i;
clrscr();
for(i=0;i<4;i++)
pathFile(hardDevice);
printf("\nTotally:%Ld",count);
getch();
}
void pathFile(char const *path)
{
struct ffblk f;
int done;
char dir[255]={0},tmp[255];
    strcpy(tmp,path);
/*查找当前目录所有文件*/
    done=findfirst(strcat(tmp,"\\*.*"),&f,FA_DIREC);
while(!done)
{
     /* 判断该文件属性是否为文件夹,FA_DIREC是文件属性为子目录(子文件夹)*/
    if(strcmp(f.ff_name,".")!=0 &&strcmp(f.ff_name,"..")!=0&& f.ff_attrib==FA_DIREC)
    {
   /*printf("This is a file.");*/
   strcpy(dir,path);
   strcat(dir,"\\");
   strcat(dir,f.ff_name);
   pathFile(dir);/*递归遍历*/
  }
  /*
   *不输出文件夹名和.和..
   */
  if(strcmp(f.ff_name,".")!=0 && strcmp(f.ff_name,"..")!=0)
   if(strstr(f.ff_name,".EXE")!=NULL)   /*输出后缀名是EXE的可执行文件,去掉此条语句,输出所有后缀名文件*/
   {
    printf("%s\t",f.ff_name);
    count++;
   }
  done=findnext(&f);
}
}
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载