C打开文件夹遍历文件

红太狼 2022-10-02 11:47 371阅读 0赞

linux中c实现打开遍历目录,其中dir指向的结构是由内核来维护的,因此文件夹内文件的变动可看到,如下示例:

在当前目录创建了cJSON文件夹并在其中创建了一个cJSON.o的文件,来验证dir的结构是否会更新。

  1. /************************************************************************* > File Name: dir_test.c > Created Time: Tue 18 Jun 2019 10:53:29 AM CST ************************************************************************/
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. #include<dirent.h>
  6. #include<sys/types.h>
  7. int main()
  8. {
  9. DIR *dir;
  10. struct dirent *ptr;
  11. char *path = "./cJSON";
  12. if ((dir=opendir(path)) == NULL)
  13. {
  14. perror("Open dir error...");
  15. exit(1);
  16. }
  17. while ((ptr=readdir(dir)) != NULL)
  18. {
  19. if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir
  20. continue;
  21. else if(ptr->d_type == 8) ///file
  22. printf("file name:%s\n", ptr->d_name);
  23. else if(ptr->d_type == 10) ///link file
  24. {
  25. printf("link name:%s\n", ptr->d_name);
  26. }
  27. else if(ptr->d_type == 4) ///dir
  28. {
  29. printf("dir name:%s\n", ptr->d_name);
  30. }
  31. }
  32. puts("------------------------------------");
  33. system("mv ./cJSON/cJSON.o ./cJSON/cJSON.o.bak");
  34. seekdir(dir, 0);
  35. while ((ptr=readdir(dir)) != NULL)
  36. {
  37. if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir
  38. continue;
  39. else if(ptr->d_type == 8) ///file
  40. printf("file name:%s\n", ptr->d_name);
  41. else if(ptr->d_type == 10) ///link file
  42. {
  43. printf("link name:%s\n", ptr->d_name);
  44. }
  45. else if(ptr->d_type == 4) ///dir
  46. {
  47. printf("dir name:%s\n", ptr->d_name);
  48. }
  49. }
  50. closedir(dir);
  51. return 0;
  52. }

发表评论

表情:
评论列表 (有 0 条评论,371人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C打开文件夹文件

    linux中c实现打开遍历目录,其中dir指向的结构是由内核来维护的,因此文件夹内文件的变动可看到,如下示例: 在当前目录创建了cJSON文件夹并在其中创建了一个cJSON.