设为首页 加入收藏

TOP

如何列出一个目录下面的所有文件
2011-02-02 17:07:07 来源: 作者: 【 】 浏览:1020
Tags:如何 列出 一个 目录 面的 所有 文件
linux平台可以使用opendir函数来打开一个目录,用readdir读取目录当中的一个entry(一个entry可以是子目录,文件,软硬链接等),如果需要读取所有目录下面的文件,需要使用while((entry = readdir(dp))) 来读去每个entry,直到读取的entry == NULL。

      还有需要注意的就是目录打开之后,需要自己关闭的,可以调用closedir(DIR*)来关闭,这个和文件fd的操作非常类似,不会的同学可以参考标准的stdio文件操作。

      下面代码是从wiki上面摘过来的, listdir扮演了打印指定目录下面所有文件的功能,类似于linux命令"ls"的功能。

 

Cpp代码
  1. /************************************************************** 
  2.  * A simpler and shorter implementation of ls(1) 
  3.  * ls(1) is very similar to the DIR command on DOS and Windows. 
  4.  **************************************************************/  
  5. #include <stdio.h>  
  6. #include <dirent.h>  
  7. int listdir(const char *path) {  
  8.   struct dirent *entry;  
  9.   DIR *dp;  
  10.   dp = opendir(path);  
  11.   if (dp == NULL) {  
  12.     perror("opendir");  
  13.     return -1;  
  14.   }  
  15.   while((entry = readdir(dp)))  
  16.     puts(entry->d_name);  
  17.   closedir(dp);  
  18.   return 0;  
  19. }  
  20. int main(int argc, char **argv) {  
  21.   int counter = 1;  
  22.   if (argc == 1)  
  23.     listdir(".");  
  24.   while (++counter <= argc) {  
  25.     printf("\nListing %s...\n", argv[counter-1]);  
  26.     listdir(argv[counter-1]);  
  27.   }  
  28.   return 0;  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++中的内联函数 下一篇C关于指针和内存的那些大事

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: