Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1277892
  • 博文数量: 213
  • 博客积分: 7590
  • 博客等级: 少将
  • 技术积分: 2185
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-31 17:31
个人简介

热爱开源,热爱linux

文章分类

全部博文(213)

文章存档

2018年(4)

2017年(1)

2015年(1)

2014年(5)

2013年(2)

2012年(2)

2011年(21)

2010年(82)

2009年(72)

2008年(23)

分类: LINUX

2010-03-13 11:57:49

下面是一个子目录的扫描程序,得到一个自目录清单,子目录中的每个文件单独列在一行上:
#include
#include
#include
#include
#include
#include
void printdir(char *dir )
{
    DIR *dp;
    struct dirent *entry; // in
    struct stat statbuf;
    if ((dp=opendir(dir))==NULL) {
        fprintf(stderr,"Cannot open directory:%s\n",dir);
        return;
    }
    chdir(dir);//将进程的工作目录交给dir
    while ((entry = readdir(dp))!=NULL) {
        /*readdir(dp)读取下一个目录项,返回包含文件信息的结构指针entry*/
        lstat(entry->d_name,&statbuf);//读取文件的属性,将其放到statbuf中
        if (S_ISDIR(statbuf.st_mode)) { //判断是否为目录
            /*found directory but ignore .and ..*/
            if (strcmp(".",entry->d_name)==0||strcmp("..",entry->d_name)==0)
                continue;
            printf("\n\n");
            printf("Directory: => %s/\n",entry->d_name);
            /*rescurse at a new indent level*/
            printf("File:\n");
            printdir(entry->d_name);
        }
        else printf("->%s\n",entry->d_name);
    }
    chdir("..");
    closedir(dp);//关闭dp所指向的目录
}
int main()
{
    printdir("/home/caojiangfeng/Code/Java");
    return 0;
}
caojiangfeng@caojiangfeng-laptop:~$ gcc -o print_dir print_dir.c
caojiangfeng@caojiangfeng-laptop:~$ ./print_dir
->Hello.class
->father.java
->A.class
->HTTPClient.java
->HTTPClient.class


Directory: => javaMail/
File:
->Test.java
->Email_Autherticator.java
->Mail.java~
->Mail.java
...
阅读(1380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~