Linux系统下读取目录中文件名信息题解(含源代码)


为了项目需要,需在软件增加插件功能。为了尽量减少主程序的改动(尽量不改动),需要动态扫描插件目录中的文件,以便自动增减插件,从而实现不同的功能。

为了帮助读者理解下面的工作原理,先将一些预备知识:

在Linux系统中,一切设备皆为文件!什么意思呢?就是说,在Linux系统中,不管文件系统中挂载了什么设备或是出现了什么目录,系统皆将它们看成文件。这有别于windows系统。因此,在Linux系统中实现上述操作,要远简单于windows系统。好了,知道这些就足够了:)

现特地为读取目录中文件名信息进行了如下方式的解题:

1、添加include语句:
#include <sys/types.h>
#include <dirent.h>
2、在源程序中声明以下变量:
声明结构体指针 struct dirent * ptr;
声明一个dir指针 DIR * fd;
必要的时候可以malloc或new.
3、使用opendir()函数打开目录文件
opendir()函数原型如下:
DIR *opendir(const char *name);
4、使用readdir()函数读取目录中文件内容
readdir()函数原型如下:
struct dirent *readdir(DIR *dir);
readdir()每次从目录文件中提取一个文件项目,指针前移。直至到文件末尾返回NULL值。ptr指针指向     readdir()返回的dirent 结构体,每次函数调用返回的结果不同 dirent中的成员内容不同,其中d_name成员的值为每次读取到的目录中的文件名称。

详细信息,可参考下文的源程序。

  • 1
  • 2
  • 下一页

相关内容