C语言列出文件目录中的所有文件

来源:互联网 发布:数据交换共享平台源码 编辑:程序博客网 时间:2024/05/22 10:22

        dirent.h头文件中包含了一些对文件目录进行操作的接口,虽然不是C标准中的,但是在C语言编程中是一类广泛使用的接口类型。可以通过这个头文件中的接口来查看文件目录中的文件列表,以及各个文件的信息大小等。一般情况下,vs或者vc6.0中是没有改头文件的。如果想在程序中使用,可以手动加入。下面是头文件的下载地址http://download.csdn.net/detail/qq_20916555/9488536 (本人上传的,免积分下载)

        下面就对dirent中常用的数据类型以及接口作粗略的解释:

        struct DIR {

                struct dirent ent;

                struct _WDIR *wdirp;

                 } ;

        DIR结构体代表目录操作数据流,其中包括struct diren和struct_WDIR,一般通过接口opendir(const char*dirpath)返回来改目录的操作数据流。    

        struct dirent
        {    
                long d_ino;                                             /* inode number 索引节点号 在<sys/types.h>文件该类型的描述*/
                off_t d_off;                                             /* offset to this dirent 在目录文件中的偏移 */
                unsigned short d_reclen;                     /* length of this d_name 文件名长 */
                unsigned char d_type;                         /* the type of d_name 文件类型 */
                char d_name [NAME_MAX+1];         /* file name (null-terminated) 文件名,最长256字符 */
        }

    下面是几个重要的接口函数;

            DIR        *opendir(const char*);   //通过一个目录路径返回一个对该目录数据流操作的DIR,接下来对目录的读取和搜索都要使用此返回值.

            struct dirent    *readdir(DIR    *)      //返回当前DIR中的目录或者文件实体,当再次被调用调用的时候,该dirent指针指向下一个目录或者文件实体。当函数返回null的时候,说明指针已指向操作流的尾部。

            void seekdir (DIR * dir, long int offset);   //用来设置目录操作流的读取位置,调用seekdir函数的时候便从该位置进行读取。参数offset表示相对于文件目录开头的偏移量。

            int    telldir(DIR      *dir) ;//返回当前目录流中指针位置。改位置是相对于文件开头偏移量的下一个实体读取位置的返回值。

        

实例程序:

程序功能:列出目录下所有文件和目录,注意文件目录的路径中不要包含中文,否则无法识别。


#include <iostream>#include <windows.h>#include "dirent.h"using namespace std;int main(){ int filesize = 0; DIR *dirptr=NULL;    int i=1;    struct dirent *entry;    if((dirptr = opendir("E:\\debug"))==NULL)    {  printf("opendir failed!");  return 1;    }else    {  while(entry=readdir(dirptr))  {   printf("filename%d = %s",i,entry->d_name);  //输出文件或者目录的名称,一般文件含格式名,目录没有格式名   printf("filetype = %d\n",entry->d_type);  //输出文件类型   i++;  }  closedir(dirptr); } return 0;}


文件类型:

    由程序运行结果可以知道普通文件类型的type为32768

    目录类型为1638

注意:

     其中.表示当前目录

    ..表示当前目录的上一层目录。








1 0
原创粉丝点击