得到一个简单的子目录内容清单

简介:

 要求:得到一个简单的子目录内容清单。子目录中的每一个文件单独列在一行上。如果是一个下级子目录,在它的名字后面加一个斜线字符“/”。下级子目录中的文件在缩进4个空格后一次排列。

  1. 打开子目录创建一个子目录流,并判断该目录是否存在。
  2. 进入该目录
  3. While该目录不为空 do

1)  将文件的状态信息取到一个结构体中

2)  判断该文件是否为目录

       是:a、判断是否是“.”或“..”目录

             是:回到while循环

             否:打印子目录名等,然后进行递归调用

      否:打印文件名

    4.退出该目录

    5.关闭子目录流

 

复制代码
 1 /*
 2  ============================================================================
 3  Name        : GetDirInfo.c
 4  Author      : 
 5  Version     :
 6  Copyright   : Your copyright notice
 7  Description : Hello World in C, Ansi-style
 8  ============================================================================
 9  */
10 
11 #include <unistd.h>
12 #include <stdio.h>
13 #include <dirent.h>
14 #include <string.h>
15 #include <sys/stat.h>
16 #include <stdlib.h>
17 
18 int main() {
19     printf("Directory scan of /home/fjnucse:\n");
20     printdir("/home/fjnucse", 0);
21     printf("done.\n");
22 
23     exit(0);
24 }
25 
26 void printdir(char * dir, int depth) {
27     DIR * dp; //子目录处理操作
28     struct dirent *entry; //目录数据项
29     struct stat statbuf; //通过文件名查到的状态信息
30 
31     if ((dp = opendir(dir)) == NULL) //打开目录
32     {
33         fprintf(stderr, "cannot open direntory:%s\n", dir);
34         return;
35     }
36 
37     chdir(dir); //创建子目录流
38 
39     while ((entry = readdir(dp)) != NULL)
40     //读目录
41     {
42         lstat(entry->d_name, &statbuf); //通过文件名查到的状态信息
43 
44         if (S_ISDIR(statbuf.st_mode)) //文件权限和文件类型信息
45         {
46             if (strcmp(".", entry->d_name) == 0
47                     || strcmp("..", entry->d_name) == 0) {
48                 continue;
49             }
50 
51             printf("%*s%s/\n", depth, "", entry->d_name);
52             printdir(entry->d_name, depth + 4);
53         } else {
54             printf("%*s%s/\n", depth, "", entry->d_name);
55         }
56     }
57 
58     chdir(".."); //关闭子目录流
59     closedir(dp); //退出该目录
60 }
复制代码

 


作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2013/01/19/2868041.html

目录
相关文章
|
7月前
|
数据库 Windows
文件的相关内容(一)
文件的相关内容(一)
合并多个文件的内容到一个文件
合并多个文件的内容到一个文件
|
7月前
|
前端开发
文件的相关内容(二)
文件的相关内容(二)
|
存储
测试—目录下的文件分类管理
测试—目录下的文件分类管理
45 0
|
Linux
linux目录清单
linux目录清单
80 0
获取目录下的文件及文件夹等信息
获取目录下的文件及文件夹等信息
83 0
|
内存技术
若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答
若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答
251 0
若某文件系统的目录结构如下图所示,假设用户要访问文件 fault.swf ,且当前工作目录为 swshare ,则该文件的全文件名为( ),相对路径和绝对路径分别为( 请在此空作答